我正在嘗試從此站點中洗掉資料(縮略圖鏈接) 。問題是,當它獲取資料時,它需要三個
0 <li> #contains the thumbnail link
1 <li> #should skip
2 <li> #should skip
3 <li> #contains the thumbnail link
4 <li> #should skip
5 <li> #should skip
6 <li> #contains the thumbnail link
同樣地。
這是我的代碼,
from bs4 import BeautifulSoup
import requests
import openpyxl
try:
response = requests.get("https://robloxden.com/item-codes")
soup = BeautifulSoup(response.text, 'html.parser')
items = soup.find('ul', class_="masonry masonry--5 item-codes__container").find_all("li")
for item in items:
# product's icon link
item_link = item.find('div', class_="image-card__graphic image-card__graphic--border-bottom").img
item_link = item_link['data-src']
print(item_link)
except Exception as e:
print(e)
(只需復制并運行上面的腳本,可以解決問題)這僅適用于第一個標簽,并以'NoneType' object has no attribute 'img'該錯誤終止,這意味著第二個<li>標簽不包含該<img>標簽。所以需要跳過第二個和第三個<li>標簽,第四個<li>標簽包含該<img>資料。作為學習報廢的大佬,請指導我解決這個問題。
uj5u.com熱心網友回復:
使用enumerate并跳過每 2 項,并且僅繼續(不要與 混淆continue)每 3 項的代碼。
for index, item in enumerate(items):
if index % 3 != 0:
continue
...
如果問題是在某個時候.find回傳None,您可以使用try/except:
for item in items:
try:
...
except AttributeError:
pass
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/530371.html
