将多个html文件中的文本扫描到单个csv文件中

时间:2011-01-11 14:00:42

标签: html-parsing beautifulsoup

我有超过1500个html页面(1.html到1500.html)。我已经使用Beautiful Soup编写了一个代码,它提取了我需要的大部分数据,但是“错过”了表中的一些数据。

我的输入:,例如文件1500.html

我的代码:

#!/usr/bin/env python
import glob
import codecs
from BeautifulSoup import BeautifulSoup
with codecs.open('dump2.csv', "w", encoding="utf-8") as csvfile:
for file in glob.glob('*html*'):
        print 'Processing', file
        soup = BeautifulSoup(open(file).read())
        rows = soup.findAll('tr')
        for tr in rows:
                cols = tr.findAll('td')
                #print >> csvfile,"#".join(col.string for col in cols)
                #print >> csvfile,"#".join(td.find(text=True))
                for col in cols:
                        print >> csvfile, col.string
                print >> csvfile, "==="
        print >> csvfile, "***"

输出

一个CSV文件,包含1500行文本和数据列。由于某种原因,我的代码并没有提取所有必需的数据,而是“遗漏”了一些数据,例如表格开头的地址1和地址2数据没有出来。我修改了代码以放入*和===分隔符,然后我使用perl放入一个干净的csv文件,遗憾的是我不知道如何使用我的代码来获取我正在寻找的所有数据!

1 个答案:

答案 0 :(得分:0)

找到错过参数的文件, 然后尝试分析发生的事情......

我认为相同的文件格式不同,或者可能错过了真正的地址归档。