Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
属性错误:';非类型';对象没有属性';findAll';-python_Python_Beautifulsoup - Fatal编程技术网

属性错误:';非类型';对象没有属性';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表,我如何检索表中的信息?