有没有干净的方法使用BeautifulSoup获取HTML表格的第n列?
假设我们在一个页面上查看第一个表格,
table = BeautifulSoup(...).table
我们可以用一个简单的循环来逐行扫描这个表格:
for row in table:
f(row)
但是如果想要提取某一列的数据,就会变得有些麻烦。
我的问题是:有没有什么简单的方法可以提取某一列的数据?可以通过列的位置,或者通过列的“名称”(也就是这列第一行显示的文字)来提取。
1 个回答
5
lxml 的速度比 BeautifulSoup 快很多,所以你可能会想用它。
from lxml.html import parse
doc = parse('http://python.org').getroot()
for row in doc.cssselect('table > tr'):
for cell in row.cssselect('td:nth-child(3)'):
print cell.text_content()
或者,不用循环:
rows = [ row for row in doc.cssselect('table > tr') ]
cells = [ cell.text_content() for cell in rows.cssselect('td:nth-child(3)') ]
print cells