我試圖在維基百科文章中刮一張表,每個表元素的類型看起來都是<class 'bs4.element.Tag'>
和<class 'bs4.element.NavigableString'>
。BeautifulSoup標記是類型bs4.element.NavigableString和bs4.element.Tag
import requests
import bs4
import lxml
resp = requests.get('https://en.wikipedia.org/wiki/List_of_municipalities_in_Massachusetts')
soup = bs4.BeautifulSoup(resp.text, 'lxml')
munis = soup.find(id='mw-content-text')('table')[1]
for muni in munis:
print type(muni)
print '============'
產生以下輸出中:
<class 'bs4.element.Tag'>
============
<class 'bs4.element.NavigableString'>
============
<class 'bs4.element.Tag'>
============
<class 'bs4.element.NavigableString'>
============
<class 'bs4.element.Tag'>
============
<class 'bs4.element.NavigableString'>
...
當我試圖找回muni.contents
我得到了AttributeError: 'NavigableString' object has no attribute 'contents'
錯誤。
我在做什麼錯?如何獲得每個muni
的bs4.element.Tag
對象?
(使用Python 2.7)。
你可能知道, ** munis **是維基百科頁面中表格的表示形式。如果你打印它,你會看到表格的html。如果你想查看** munis **的孩子的標籤,即它的行,那麼你可以在munis.childGenerator()中使用代碼'child.name' - 只是一系列的tr引號。我懷疑這是你想要的。你是否應該問如何刪除表中每一行的內容,可能是以Python列表的形式? –