2017-04-10 77 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.造成了這個問題。我不知道這意味着什麼。現在很清楚! –