scrapy持久化保存(保存到EXCEL文件中,之前无法执行pipeline中的代码,后来发现时setting中的ITEM_PIPELINES没有打开,现在可以正常运行咯)
一、创建的项目名称和爬虫项目如下:项目叫yxq001,爬虫文件叫file001.py。怎么创建可以查看:
https://blog.csdn.net/Di77HaoWenMing/article/details/108905515二、setting.py设置如下(其他地方没改)
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3756.400 QQBrowser/10.5.4043.400' # Obey robots.txt rules ROBOTSTXT_OBEY = False #显示指定类型的日志信息 LOG_LEVEL = 'ERROR'另外,还需要在设置中开启pipeline,因为待会保存到EXCEL中就需要用它来实现,把#注释去掉即可:
ITEM_PIPELINES = { 'yxq.pipelines.YxqPipeline': 300, }三、file001.py代码如下
import scrapy from yxq001.items import Yxq001Item class File001Spider(scrapy.Spider): name = 'file001' #allowed_domains = ['www.baidu.com'] start_urls = ['http://www.jkl.com.cn/cn/shopLis.aspx?id=862'] def parse(self, response): 名称 = response.xpath('//span[@class="con01"]/text()').extract() 名称 = [名称.strip() for 名称 in 名称] print(名称) #实例化一个item对象 item = Yxq001Item() #封装存储 item['名称'] = 名称 #将item提交给管道 return item四、items.py代码如下
import scrapy class Yxq001Item(scrapy.Item): 名称 = scrapy.Field()五、pipelines.py代码如下
import pandas as pd class Yxq001Pipeline: #处理item类型对象,接收爬虫文件传过来的item对象 def process_item(self, item, spider): print('正在写入数据') 名称 = item['名称'] mydata = pd.DataFrame({'店铺名称':名称}) mydata.to_excel('E:/python测试数据/店铺信息.xlsx',index=False) print('写入成功!') return item六、输入scrapy crawl file001执行即可
scrapy crawl file001
然后就可以正常爬取文件,并存储到EXCEL中咯