属性错误:“NoneType”对象没有属性“父”

Posted

技术标签:

【中文标题】属性错误:“NoneType”对象没有属性“父”【英文标题】:Attribute Error:'NoneType' object has no attribute 'parent' 【发布时间】:2017-09-14 16:25:18 【问题描述】:
from urllib.request import urlopen
from bs4 import BeautifulSoup
html= urlopen("http://www.pythonscraping.com/pages/page3.html")
soup= BeautifulSoup(html.read())
print(soup.find("img","src":"../img/gifts/img1.jpg"
).parent.previous_sibling.get_text())

上面的代码工作正常,但下面的代码不行。它给出了一个属性错误,如上所述。谁能告诉我原因?

from urllib.request import urlopen       
from bs4 import BeautifulSoup
html= urlopen("http://www.pythonscraping.com/pages/page3.html")
soup= BeautifulSoup(html.read())
price =soup.find("img","src=":"../img/gifts/img1.jpg"
).parent.previous_sibling.get_text()
print(price)

谢谢! :)

【问题讨论】:

两者都产生 $15.00 希望我能说同样的话.. 我已经尝试重新启动,除了同样的错误之外的一切。我将尝试再次查看代码。谢谢 【参考方案1】:

如果您比较第一个和第二个版本,您会注意到:

第一: soup.find("img","src":"../img/gifts/img1.jpg").parent.previous_sibling.get_text()

注意:"src"

第二个: soup.find("img","src=":"../img/gifts/img1.jpg").parent.previous_sibling.get_text()

注意:"src="

第二个代码返回Attribute Error:'NoneType' object has no attribute 'parent',因为它在提供的汤中找不到src=="../img/gifts/img1.jpg"

因此,如果您在第二个版本中删除 =,它应该可以工作。


顺便说一句,你应该明确你想使用哪个解析器,否则bs4 将返回以下警告:

用户警告:没有明确指定解析器,所以我使用的是最好的 此系统可用的 HTML 解析器(“lxml”)。这通常不是 问题,但是如果您在另一个系统上运行此代码,或者在不同的 虚拟环境,它可能使用不同的解析器并表现 不同。

要消除此警告,请更改如下所示的代码:

BeautifulSoup([你的标记])

到这里:

BeautifulSoup([你的标记], "lxml")

因此,如警告消息中所述,您只需将 soup = BeautifulSoup(html.read()) 更改为 soup = BeautifulSoup(html.read(), 'lxml'),例如。

【讨论】:

我对这一切都很陌生。非常感谢!!

以上是关于属性错误:“NoneType”对象没有属性“父”的主要内容,如果未能解决你的问题,请参考以下文章

烧瓶错误:“NoneType”对象没有“永久”属性

Elastic Beanstalk 部署错误:AttributeError :: 'NoneType' 对象没有属性 'split'

分析 GPX 数据时出现错误“'NoneType' 对象没有属性 'offset'”

使用 sender() 获取按钮文本总是返回错误 — 'NoneType' 对象没有属性 'text'

属性错误:nonetype 对象没有形状

将列表转换为DataFrame时如何处理错误“'NoneType'对象没有属性'keys'”