如何使用包含标签的行和标签的行解析HTML表格?

时间:2015-11-24 08:09:29

标签: python html web-scraping beautifulsoup

我似乎无法找到答案,所以我很难过。我使用Beautifulsoup解析HTML表格,并以行标签<th>开头,然后是数据<td>。我正在解析数据然后将其写入CSV文件,我遇到了包括&#34;行标题&#34;对于以<th>标记开头的每一行。

这是我到目前为止所做的工作,除了<th>行标签<th>之外,它完成了大部分工作:

headers = [header.text.strip() for header in table.find_all('th',{'scope' :'col'})]

rows = []

for row in table.find_all('tr'):
    rows.append([val.text.encode('utf8').rstrip() for val in row.find_all('td')])
with open('filename.csv', 'wb') as f:
    writer = csv.writer(f)
    writer.writerow(headers)
    writer.writerows(row for row in rows if row)

有没有办法将其附加到rows?非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

BeautifulSoup find_all函数可以获取列表,因此要获取th,您可以按如下方式修改脚本:

headers = [header.text.strip() for header in table.find_all('th',{'scope' :'col'})]
rows = []

for row in table.find_all('tr'):
    rows.append([val.text.encode('utf8').rstrip() for val in row.find_all(['td', 'th'])])

with open('filename.csv', 'wb') as f:
    writer = csv.writer(f)
    writer.writerow(headers)
    writer.writerows(row for row in rows if row)

答案 1 :(得分:0)

您是否考虑过使用HTML Parser模块?