微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用BeautifulSoup从表中提取选定的列

如何解决使用BeautifulSoup从表中提取选定的列

您可以尝试以下代码

import urllib2
from BeautifulSoup import BeautifulSoup

url = "http://www.samhsa.gov/data/NSDUH/2k10State/NSDUHSAE2010/NSDUHSAEAppC2010.htm"
soup = BeautifulSoup(urllib2.urlopen(url).read())

for row in soup.findAll('table')[0].tbody.findAll('tr'):
    first_column = row.findAll('th')[0].contents
    third_column = row.findAll('td')[2].contents
    print first_column, third_column

如您所见,代码只是连接到url并获取html,BeautifulSoup找到第一个表,然后找到所有“ tr”并选择第一列(即“ th”)和第三列,即一个“ TD”。

解决方法

我正在尝试使用BeautifulSoup提取此数据表的第一和第三列。通过查看HTML,第一列具有一个<th>标记。感兴趣的另一列具有作为<td>标记。无论如何,我所能获得的就是带有标签的列的列表。但是,我只想要文本。

table已经是列表,所以我不能使用findAll(text=True)。我不确定如何以另一种形式获得第一列的清单。

from BeautifulSoup import BeautifulSoup
from sys import argv
import re

filename = argv[1] #get HTML file as a string
html_doc = ''.join(open(filename,'r').readlines())
soup = BeautifulSoup(html_doc)
table = soup.findAll('table')[0].tbody.th.findAll('th') #The relevant table is the first one

print table

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。