![](/img/trans.png)
[英]Python - AttributeError: 'NoneType' object has no attribute 'findAll'
[英]AttributeError: 'NoneType' object has no attribute 'findAll' - Python
這幾天我一直在想辦法解決這個問題,這讓我發瘋了! 我試圖從 Morningstars 網站(最左邊的列)獲取表格中的所有基金名稱,但我一直被告知:
"AttributeError: 'NoneType' object has no attribute 'findAll'".
也許我專注於錯誤的表類,但不確定。 晨星名字示例:明治安田 DC日本債券オープン 『愛稱:DCしあわせ宣言』
請看下面
import bs4 as bs
import pickle
import requests
# gather data into variable
def save_DC_names():
resp = requests.get('http://www.morningstar.co.jp/FundData/DetailSearchResult.do?pageNo=1')
soup = bs.BeautifulSoup(resp.text,"lxml")
table = soup.find('table',{'class': "table1f"})
tickers = []
for row in table.find_all('tr')[1:]:
ticker = row.find_all('td')[0].text
tickers.append(ticker)
with open("DCtickers.pickle","wb") as f:
pickle.dump(tickers,f)
print(tickers)
return tickers
save_DC_names()
這里的問題是soup.find 返回None。 None 的類是 NoneType,並且 NoneType 沒有 find_all 或任何類似的東西。
sound.find 返回 None 因為文檔中沒有與您要求的表相匹配的表。 事實上,我已經看過了,根本沒有 HTML 表格。 看起來有一個表格,因為有一個包含 HTML 表格標記的 HTML 注釋,但任何合理的解析器都將注釋視為不透明的。
如果你真的想解析注釋中的 HTML,你可以得到所有的注釋
comments = soup.find_all(string=lambda text:isinstance(text,bs.Comment))
然后,您必須找到適當的評論,然后再次用漂亮的湯解析它。 由於此 HTML 位於注釋中,因此不能保證它是有效的 HTML。
來自 BS4 文檔:
AttributeError: 'NoneType' object has no attribute 'foo' - 這通常是因為您調用了 find() 然后嘗試訪問結果的 .foo` 屬性。 但是在您的情況下, find() 沒有找到任何內容,因此它返回 None,而不是返回標簽或字符串。 您需要弄清楚為什么您的 find() 調用沒有返回任何內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.