2017-04-10 81 views
0

我做的这个教程 - > http://programminghistorian.org/lessons/intro-to-beautiful-soupBS对象有没有属性“分解”

当我运行后续代码我得到这个错误:

AttributeError: 'NoneType' object has no attribute 'decompose'

from bs4 import BeautifulSoup 

soup = BeautifulSoup (open("43rd-congress.html")) 

final_link = soup.p.a 
final_link.decompose() 

links = soup.find_all('a') 

for link in links: 
    print(link) 

我可以”不明白为什么我得到这个错误。我不确定soup.p.a是做什么的。谷歌搜索但没有出现...

回答

0

请确保您的工作目录中有一个名为43rd-congress.html的html文件。它必须具有教程中提到的几行。您得到的错误很可能是因为程序无法找到嵌入工作目录内的文件43rd-congress.html中“p”标签内的“a”标签。

soup.p.a让你定位和刮出嵌套在“p”标签内的“a”标签,并将它传递给指定的变量(本例中为final_link)。分解函数将从原始的BeautifulSoup对象“汤”中移除存储在“final_link”中的元素。

例如,请考虑此示例与您提到的网站上的示例非常相似。

<p align="left"> 
    <a href="google.com"> 
    <b>Search Again</b> 
    </a> 
</p> 
<a href="facebook.com">Hello</a> 
<a href="mail.yahoo.com">Yahoo</a> 

当你上面的代码为43,congress.html保存到你的工作目录并运行你的代码,你会看到输出

<a href="facebook.com">Hello</a> 
<a href="mail.yahoo.com">Yahoo</a> 

的“一个”标签“p范围内的封闭“标签通过程序的动作从”汤“对象完全删除。

+0

谢谢!这是soup.p.a.造成了这个问题。我不知道这意味着什么。现在很清楚! –