在糗事百科爬虫中咱们的爬虫是继承scrapy.Spider类的,这也是基本的scrapy框架爬虫,在这个爬虫中咱们本身在解析完整个页面后再获取下一页的url,而后从新发送了一个请求,而使用CrawlsSpider类能够帮助咱们对url提出条件,只要知足这个条件,都进行爬取,CrawlSpider类继承自Spider,它比以前的Spider增长了新功能,便可以定义url的爬取规则,而不用手动的yield Request。php
scrapy genspider -t crawl + 爬虫名 + 主域名css
一、LinkExtractors连接提取器(找到知足规则的url进行爬取)html
class crapy.linkextractors.lxmlhtml.
LxmlLinkExtractor
(allow=(), deny=(), allow_domains=(), deny_domains=(), deny_extensions=None, restrict_xpaths=(), restrict_css=(), tags=('a', 'area'), attrs=('href', ), canonicalize=True, unique=True, process_value=None)正则表达式
主要参数介绍:小程序
allow:容许的url,全部知足这个正则表达式的url都会被提取微信小程序
deny:禁止的url,全部知足这个正则表达式的url都不会被提取微信
allow_domains:容许的域名,在域名中的url才会被提取app
deny_domains:禁止的域名,在域名中的url不会被提取框架
restrict_xpaths:使用xpath提取dom
restrict_css:使用css提取
二、Rule规则类
class scrapy.contrib.spiders.Rule(link_extractor,callback=None,cb_kwargs=None,follow=None,process_links=None,process_request=None)
主要参数介绍:
link_extractor:一个LinkExtractor对象,用来定义爬取规则
callback:回调函数
follow:从response中提取的url如知足条件是否进行跟进
process_links:从link_extractor中获取到的连接首先会传递给该函数,主要用来过滤掉无用的连接
一、目标站点选取(http://www.wxapp-union.com/portal.php?mod=list&catid=2&page=1)
二、建立项目和爬虫
scrapy startproject weixin_app---cd weixin_app---scrapy genspider -t crawl spider wxapp-union.com
观察一下发现spider.py文件已改变了
三、编写代码
改写settings.py
禁止遵循robots协议
设置请求头
设置爬取延迟
开启pipeline
改写items.py
改写pipeline.py
改写spiders.py
一、CrawlSpider主要使用LinkExtractor 和 Rule
二、注意事项:allow设置方法:限定在咱们想要的url上,不要与其余url产生相同的正则表达式,follow设置方法:在爬取页面的时候须要将知足条件的url进行跟进,设置为True,callback设置方法:在获取详情信息的页面需指定callback,而对于只要获取url,而不要具体数据的状况则不须要指定该参数。