上篇博客写了爬取静态网页内容,但缺乏永久保存的方法,这篇博客讲述如何通过item,pipeline来保存获取的内容
修改爬虫文件夹下的items.py文件
item是scrapy保存文件的容器,和字典差不多
依照它给的例子修改,在这里,我们保存的是标题和url
#修改items.py
import scrapy
class BiqugespiderItem(scrapy.Item):
# define the fields for your item here like:
#依照例子添加
title = scrapy.Field()
t_url = scrapy.Field()
通过pipeline设置保存方法
-
本地保存
- 保存为csv文件
import csv
class BiqugespiderPipeline:
def process_item(self, item, spider):
title = item['title']
t_url = item['t_url']
rows = zip(title,t_url)
headers = ['title','url']
with open('url.csv','w+',) as f:
write = csv.writer(f)
write.writerow(headers)
write.writerows(rows)
return item
-
保存到数据库
- 连接数据库并保存
我的一篇博客有写:https://blog.csdn.net/ucidity/article/details/109228431
import pymysql
class Save_musqlPipeline:
def process_item(self,item,spider):
title = item['title']
url = item['t_url']
self.con = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='123123', db='story',
charset='utf8', connect_timeout=1000)
self.cursor = self.con.cursor()
for i in range(len(title)):
self.cursor.execute('insert into article values("%s","%s");'%(title[i],url[i]))
self.con.commit()
self.cursor.close()
self.con.close()
最后,不要忘记从setting中将pipeline打开
我将两个都打开了。也就是说他会将文件保存到本地和mysql中。
关注公众号,可以查看更多有关linux,python的信息