阅读本论坛后,我不确定哪种方法最好将数据部分提取到CSV文件中。 Python / Beautiful Soup / html2text。由于文件数量很多,我想尝试编写一个可以在终端中运行的脚本。
输出:一个CSV文件,包含文本行和五列数据。例如第一行和最后一行
100 2010-12-20 145 ABC 04110000
1 2010-11-10 133 DDD 041123847
谢谢!
答案 0 :(得分:3)
我建议使用BeautifulSoup
。这样的事情会做(完全未经测试)。请阅读documentation了解更多信息。
csvfile = open('dump.csv', 'w')
for file in glob.glob('*.html'):
print 'Processing', file
soup = BeautifulSoup(open(file).read())
for tr in soup.findAll('tr'):
print >>csvfile, ' '.join(tr.findAll('td'))
答案 1 :(得分:1)
我不知道Python本身是否支持XPath,但如果确实如此,你应该对该主题进行一些研究。
另一种替代解决方案是正则表达式。
答案 2 :(得分:0)
我已将我的代码修改为:
#!/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, "***"
代码现在使用 * 和===分隔符来提取数据然后使用perl将其放入干净的csv文件中。出于某种原因,它并没有提取所有必需的数据,但是"未命中"一些数据,例如地址1和地址2数据+表格开头的日期和时间和数字都没有出来。