需求:
我们编写网络爬虫从豆瓣网爬取一些书籍的信息,以csv的格式存储:
书名,作者,出版社,价格
精通scrapy网络爬虫,刘硕,清华大学出版社,46.00
算法导论,Charles E.leiserson,人民邮电出版社,85.00
python灰帽子,Justin Seitz,电子工业出版社,39.00
....
请将价格高于80.00的书,记录存储到另一个csv文件中
思路:
使用标准库中的csv模块,可以使用其中的reader和writer完成文件读写
代码:
import csv
from urllib.request import urlretrieve
# 通过urlretrieve的方法下载文件到本地,code后接要抓取的股票代码号,&后接的是时间,可以省略
urlretrieve('http://quotes.money.163.com/service/chddata.html?code=1002566&start=20150104&end=20160108','yikang.csv')
# 下面过滤出想要的数据信息,注意编码的方式
with open('yikang.csv','r',encoding='gbk') as rf: # 若是python二中则要以rb的方法打开
reader = csv.reader(rf) # 得到一个迭代器的对象
with open('yikang2.csv','w',encoding='gbk') as wf:
writer = csv.writer(wf)
# 写入header
headers = next(reader) # 迭代器的next()方法
writer.writerow(headers)
# 根据条件对数据进行过滤
for row in reader:
if row[0] < '2016-01-01':
break
if int(float('124872735.08')) > 50000000: # 注意要先用float的方法,直接用Int方法会报错
writer.writerow(row)
print('end')
===================================================================================
import csv
with open('books.csv') as rf:
reader = csv.reader(rf)
headers = next(reader)
with open('books_out.csv', 'w') as wf:
writer = csv.writer(wf)
writer.writerow(headers)
for book in reader:
price = book[-2]
if price and float(price) >= 80.00:
writer.writerow(book)