属性错误:';非类型';对象没有属性';findAll';-python
我已经想了好几天了,快把我逼疯了!我试图从晨星网站(最左边的一栏)获取表中所有的基金名称,但我一直被告知:属性错误:';非类型';对象没有属性';findAll';-python,python,beautifulsoup,Python,Beautifulsoup,我已经想了好几天了,快把我逼疯了!我试图从晨星网站(最左边的一栏)获取表中所有的基金名称,但我一直被告知: "AttributeError: 'NoneType' object has no attribute 'findAll'". 也许我把重点放在了错误的table类上,但不确定。晨星的名字示例:明治安田 直流日本債券オープン 『愛称:直流しあわせ宣言』 请看下面 import bs4 as bs import pickle import requests
"AttributeError: 'NoneType' object has no attribute 'findAll'".
也许我把重点放在了错误的table类上,但不确定。晨星的名字示例:明治安田 直流日本債券オープン 『愛称:直流しあわせ宣言』
请看下面
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\u all或任何类似的内容 soup.find返回None,因为文档中没有与您要求的内容匹配的表。事实上,我已经查看了它,并且根本没有HTML表。它看起来像是有一个表,因为有一个包含HTML表标记的HTML注释,但是任何合理的解析器都会将注释视为不透明的 如果您真的想解析注释中的HTML,可以使用
comments = soup.find_all(string=lambda text:isinstance(text,bs.Comment))
然后,您必须找到适当的注释,然后再次使用beautiful soup对其进行解析。由于此HTML位于注释中,因此无法保证它是有效的HTML。来自BS4文档:
AttributeError:“非类型”对象没有属性“foo”-这通常是因为您调用了find(),然后试图访问结果的.foo`属性。但在您的情况下,find()没有找到任何内容,因此它返回了None,而不是返回标记或字符串。您需要弄清楚为什么find()调用没有返回任何内容。在bs4中,
findAll
实际上是find_all()
findAll
是BS3感谢注释,我尝试了“find_all”,仍然得到相同的错误。好吧,没有带有id=“table1f”的表
也存在。对,我一直认为这是问题所在,但根据检查URL,找不到比table1f更好的选项。非常感谢,Aaron!我对所有这些都很陌生,因为它不是HTML表,我如何检索表中的信息?