AttributeError:'NoneType'对象没有属性'children'

时间:2017-06-07 21:27:17

标签: python html beautifulsoup

from urllib.request import urlopen
from bs4 import BeautifulSoup

html = urlopen("http://www.pythonscraping.com/pages/page3.html")
bsObj = BeautifulSoup(html,"html.parser")

for child in bsObj.find("table",{"id":"giftlist"}).children:
    print(child)
  

有人能告诉我我的代码有什么问题吗? :(((接下来该怎么做?

4 个答案:

答案 0 :(得分:1)

我不确定您是否已经解决了3年前发布的此问题,但是我认为您犯了一个小错误。

标签的ID不是“礼物清单”,而是“礼物清单”

您的代码是否来自O'Reilly系列丛书中的“使用Python进行网络搜刮”一书?我从那本书中找到了完全相同的代码,包括该网页pythonscraping.com/pages/page3.html,该网页由作者发布,目的是为读者提供一个练习的地方。顺便说一句,它也是giftList,所以我认为您可能复制了错误的代码

现在尝试这个

for child in bsObj.find("table",{"id":"giftList"}).children:
print(child)

答案 1 :(得分:0)

一种选择是将违规循环结构放入try中,然后处理当interator返回None时出现的异常:

from urllib.request import urlopen
from bs4 import BeautifulSoup

html = urlopen("http://www.pythonscraping.com/pages/page3.html")
bsObj = BeautifulSoup(html,"html.parser")

try:
    for child in bsObj.find("table",{"id":"giftlist"}).children:
        print(child)
except AttributeError:
    # do what you want to do when bsObj.find() returns None

或者您可以在进入循环之前检查结果列表中的无:

from urllib.request import urlopen
from bs4 import BeautifulSoup

html = urlopen("http://www.pythonscraping.com/pages/page3.html")
bsObj = BeautifulSoup(html,"html.parser")

result = bsObj.find("table",{"id":"giftlist"})
if result:
    for child in result.children:
        print(child)
else:
    # do what you want to do when bsObj.find() returns None

答案 2 :(得分:0)

这是错字问题。我也遇到了同样的问题。在网页中,ID名称应为“id =”gift L ist“,而非礼品列表。 它应该在修改id名称后起作用。试试吧。

答案 3 :(得分:0)

您应将代码放在try-except块中

from urllib.request import urlopen
from bs4 import BeautifulSoup

html = urlopen("http://www.pythonscraping.com/pages/page3.html")
bsObj = BeautifulSoup(html,"html.parser")

try:
    for child in bsObj.find("table",{"id":"giftlist"}).children:
        print(child)
except AttributeError as e:
    print(e)
except:
    print("An error has occured")

***在您访问我的网站的情况下,该ID不是“ giftlist”,这是“ giftLift”,您输入错误,这就是为什么find函数不返回任何类型对象的原因。