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

原文地址:https://www.cnblogs.com/zuofaqi/p/9563500.html