我试图在维基百科文章中刮一张表,每个表元素的类型看起来都是<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列表的形式? –