创建CrawlSpider
scrapy genspider -t crawl 爬虫名 (allowed_url)
Rule对象
Rule类与CrawlSpider类都位于scrapy.contrib.spiders
模块中
class scrapy.contrib.spiders.Rule(
link_extractor,
callback=None,
cb_kwargs=None,
follow=None,
process_links=None,
process_request=None)
参数含义:
-
link_extractor为LinkExtractor,用于定义需要提取的链接
-
callback参数:当link_extractor获取到链接时参数所指定的值作为回调函数
-
follow:指定了根据该规则从response提取的链接是否需要跟进。当callback为None,默认值为True
-
process_links:主要用来过滤由link_extractor获取到的链接
-
process_request:主要用来过滤在rule中提取到的request
LinkExtractors 顾名思义,链接提取器
response对象中获取链接,并且该链接会被接下来爬取 每个LinkExtractor有唯一的公共方法是 extract_links(),它接收一个 Response 对象,并返回一个 scrapy.link.Link 对象
class scrapy.linkextractors.LinkExtractor(
allow = (),
deny = (),
allow_domains = (),
deny_domains = (),
deny_extensions = None,
restrict_xpaths = (),
tags = ('a','area'),
attrs = ('href'),
canonicalize = True,
unique = True,
process_value = None
)
主要参数:
- allow:满足括号中“正则表达式”的值会被提取,如果为空,则全部匹配。
- deny:与这个正则表达式(或正则表达式列表)不匹配的URL一定不提取。
- allow_domains:会被提取的链接的domains。
- deny_domains:一定不会被提取链接的domains。
- restrict_xpaths:使用xpath表达式,和allow共同作用过滤链接(只选到节点,不选到属性)
- restrict_css:使用css表达式,和allow共同作用过滤链接(只选到节点,不选到属性)
查看效果-shell中验证
首先运行
scrapy shell '一个url地址'
继续import相关模块:
from scrapy.linkextractors import LinkExtractor
提取当前网页中获得的链接
link = LinkExtractor(restrict_xpaths=(r'//a'))
调用LinkExtractor实例的extract_links()方法查询匹配结果
link.extract_links(response)
标签:None,CrawlSpider,scrapy,Scrapy,link,LinkExtractor,使用,domains,链接 From: https://www.cnblogs.com/jiangjiayun/p/17501529.html