scrapy学习笔记
命令流程:
scrapy startproject study #创建一个项目,名字为study
cd study #进入study目录
scrapy genspider yibaizhang yibaizhang.com #创建爬虫,名字为yibaizhang
## spider 目录所有的存放爬虫,可以通过scrapy list命令看到。有yibaizhang.py文件,内含YibaizhangSpider类,因为是scrapy.Spider的基类,故其初始执行函数为start_requests,可以通过重写此函数,指定初始的解析函数(代替parse)
## 解析使用的是scrapy.Selector类,其xpath方法,有几个函数:
response.xpath('//div[starts-with(@id, "hea")]') # 以hea开头
response.xpath('//div[contains(@id, "ner")]') # 包含ner
response.xpath('//div[re:test(@id, "info$")]') # 正则表达式
## URL去重,默认使用的是scrapy.dupefilters.RFPDupeFilter,在settings/default_settings.py指定的。可以修改的自定义的,需要在setting.py文件中,配置DUPEFILTER_CLASS的值
比如:DUPEFILTER_CLASS = "study.duplication.MyDupeFilter"。使用duplication文件中的MyDupeFilter类。该类可以继承自scrapy.dupefilters.BaseDupeFilter,实现其中的方法
## pipeline 用来做持久化
有files, images, media 三个scrapy提供的pipeline可用。可以根据需求实现自己的Pipeline,可以加上这几个方法:
@classmethond from_crawler(self, crawler); open_spider(self, spider); close_spider(self, spider);
多个pipeline的时候,前一个return item 可以传递给下一个pipeline类。如果不需要传下去,可以raise scrapy.exceptions.DropItem
通过spider.name指定爬虫的pipeline