属性错误:“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”对象没有属性“父”的主要内容,如果未能解决你的问题,请参考以下文章
Elastic Beanstalk 部署错误:AttributeError :: 'NoneType' 对象没有属性 'split'
分析 GPX 数据时出现错误“'NoneType' 对象没有属性 'offset'”