![](/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.