獲取'NoneType' object has no attribute 'text'錯誤而刮使用beautifulSoup網頁。
html 檔案的部分如下所示:
<div class="ntb boy">
<ol>...</ol>
<ul class="nbd">
<li class="ntr" data-id="bwjleo">
<i class="nvt">...</i>
<dl class="nem">
<dt class="nvar">
<b>
<a href="https://www.babynamesdirect.com/boy/aak" title="Meaning and more details of Aak">
Aak
</a>
</b>
</dt>
<dd class="ndfn">
A Nature; Sky
</dd>
</dl>
<em class="narr">
</em>
</li>
<li>...</li>
<li>...</li>
.
.
</ul>
</div>
用于提取名稱的代碼(上述 html 中的“Aak”):
res = requests.get('https://www.babynamesdirect.com/baby-names/indian/boy/trending')
soup = BeautifulSoup(res.text, 'html5lib')
ul = soup.find('div', class_ = 'ntb boy').find_all('li')
names = [name.dt.text for name in ul]
print(names)
當我嘗試列印時name.dt,我得到bs4.element.Tag. 但是 name.dt.text 給AttributeError: 'NoneType' object has no attribute 'text'.
uj5u.com熱心網友回復:
您會收到錯誤訊息,因為如果您嘗試直接抓取,則存在某些 None 值。
例如:在名稱 Naksh 之后有一個空欄位,它給出了錯誤。
你可以試試這個來解決你的錯誤。
res = requests.get('https://www.babynamesdirect.com/baby-names/indian/boy/trending')
soup = BeautifulSoup(res.text, 'html5lib')
ul = soup.find('div', class_ = ['ntb','boy']).find_all('li')
for name in ul:
try:
print(name.dt.a.text)
except:
pass
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/349825.html
上一篇:pythonseleniumwebscraping(單擊顯示資料的按鈕然后提取它)
下一篇:用硒查找元素
