scrapy基础流程
scrapy框架运行时基本流程:
scrapy crawl 爬虫名
在./biquge/biquge/spiders中找到爬虫名为指定爬虫名的爬虫类(以下简称本类);
开始向本类中starts_urls中的网址发送请求(scrapy.Request);
接收服务器的返回(response),调用parse方法处理(scrapy.Spider中);
scrapy.spiders.CrawlSpider中重写了scrapy.Spider的parse方法:
服务器的返回(Response)会返回给scrapy.spiders.Rule来处理;
Rule可以接收一个正则表达式在Response中匹配满足表达式的网址,再次发送Request,返回的Response交由callback指定的函数去处理;
1 rules = ( 2 Rule(LinkExtractor(allow=r'http://www.xbiquge.la/10/10489/9687224.html'), callback='parse_item', follow=True), 3 )
./biquge/biquge/items.py中编写想要存储的字段类(Item):
在parse(scrapy.Spider)/parse_item(scrapy.CrawlSpider)中,一般会将从Response中解析(一般用xpath)出来的字段存储到Item结构中,并使用yield抛出;
./biquge/biquge/pippelines.py中可以编写存储逻辑(目前只知道这个作用,后续可能会有别的):
抛出后的Item会交由pipelines.py中写好的管道类去处理,具体使用哪个Pipeline类在./biquge/biquge/settings.py文件中设置,数字越低,优先级越高;
主要为process_item()函数,参数为接收到的item跟spider(默认,一般不需要更改)。
具体一点为:settings.py设置BiqugePipeline处理数据存储逻辑,
BiqugeSpider中调用BiqugeItem存储数据(Item),
BiqugeSpider抛出存储的数据(Item)给BiqugePipeline处理(写入文件)