我正在學習網路抓取的基礎知識,并且正在使用 Indeed 作為我的試驗場。
我排除了我滿意的代碼部分以避免冗長的帖子。列印陳述句的“indeed(dot)com”部分將替換為“site”,因此我的帖子不會被自動洗掉或標記。
related_jobs 變數的型別為 bs4.element.tag。我的代碼如下:
for job in jobs:
related_jobs = job.find('span', class_ = 'mat')
print(f"All Postings By {company_name}: site{related_jobs}")
這是列印陳述句的輸出之一:

我的問題如下:我想將“site”變數附加到 span 標簽中的第一個“a”標簽,當我嘗試以這種方式實作時:
related_jobs = job.find('span', class_ = 'mat').a['href']
,輸出正是我想要的,但在第一次列出后不會繼續。我收到此錯誤:“AttributeError: 'NoneType' 物件沒有屬性 'a'”。
我的問題:有沒有辦法讓我的 for 回圈在整個頁面串列中繼續?如果沒有,是否有一個字串方法可以用來抓取第一個標簽?
uj5u.com熱心網友回復:
回圈中的一些迭代發現沒有jobs。您可以做的是使用try/except陳述句或進行 if 檢查:
for job in jobs:
related_jobs = job.find('span', class_ = 'mat')
if not related_jobs:
# no jobs - skip this iteration
continue
related_jobs = related_jobs.a['href']
print(f"All Postings By {company_name}: site{related_jobs}")
或者更多的pythonic方法是使用try/except陳述句:
for job in jobs:
try:
related_jobs = job.find('span', class_ = 'mat').a['href']
except (AttributeError, KeyError):
continue
print(f"All Postings By {company_name}: site{related_jobs}")
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/317043.html
上一篇:并非所有容器都使用美湯裝載
