Python爬虫的数据存储模式有很多中,有json,mongodb,mysaql,csv,我本人了解这几个比较常用的。我们从最容易了解的csv开始。
CSV(comma-separated values,逗号分隔值)是存储表格数据的常用文件格式。Microsoft Excel 和很多应用都支持 CSV 格式,因为它很简洁。下面就是一个 CSV 文件的例子:
fruit,cost
apple,1.00
banana,0.30
pear,1.25
和Python 一样,CSV 里空白(whitespace)也是很重要的:每一行都用一个换行符分隔,列与列之间用逗号分隔(因此得名“逗号分隔”)。CSV 文件(有时也叫字符分隔值)
Python的csv 库可以非常简单地修改 CSV 文件,甚至可以从零开始创建一个 CSV 文件:
import csv
csvFile =open('test.csv', 'w+')
try:
writer = csv.writer(csvFile)
writer.writerow(('number', 'number plus 2','number times 2'))
for i in range(10):
writer.writerow( (i, i+2, i*2))
finally:
csvFile.close()
这里提个醒儿:Python 新建文件的机制考虑得非常周到。如果 test.csv 不存在,Python 会自动创建该文件(不会自动创建文件夹)。如果该文件已经存在,Python 会用新的数据覆盖 test.csv 文件。
运行完成后,你会看到一个 CSV 文件:
number,number plus2,number times 2
0,2,0
1,3,2
2,4,4
...
网页抓取的一个常用功能就是获取 HTML 表格并写入 CSV 文件,写入 CSV 文件之前需要忽略的 HTML 元素。用 BeautifulSoup 和 get_text() 函数,你可以用十几行代码完成这件事:
import csv
from urllib.requestimport urlopen
from bs4 importBeautifulSoup
html = urlopen('网址'
'Comparison_of_text_editors')
bs =BeautifulSoup(html, 'html.parser')
# 主对比表格是当前页面上的第一个表格
table =bs.findAll('table',{'class':'baidu'})[0]
rows =table.findAll('tr')
csvFile = open('editors.csv','wt+')
writer =csv.writer(csvFile)
try:
for row in rows:
csvRow = []
for cell in row.findAll(['td', 'th']):
csvRow.append(cell.get_text())
writer.writerow(csvRow)
finally:
csvFile.close()
获取单个表格的更简便的方法
如果你有很多 HTML 表格,且每个都要转换成 CSV 文件,或者要将许多 HTML 表格汇总到一个 CSV 文件,那么可以把这个程序整合到爬虫里。但是,如果这种事情你只需要做一次,那么更好的办法是复制粘贴。选中 HTML 表格内容然后复制粘贴到 Excel 里,就可以另存为 CSV 格式,不需要写代码就能搞定!
这个程序会在程序上一层目录的 files 文件夹里生成一个 CSV 文件 ../files/editors.csv。
其实没那么难,很简单的,动手演示就可以了。