CrawlSpider通用爬虫

CrawlSpider是spider的派生类,其设计原理是爬取start_url列表中的网页,CrwalSpider定义了一些规则Rule提供跟进连接的机制,从爬取的网页中获取连接并继续爬取的工作。

1、创建通用爬虫的爬虫文件

 scrapy genspider -t crawl 爬虫文件 域名

2、CrawlSpider继承与Spider类

class XcfcrawlspiderSpider(CrawlSpider):
#爬虫名称
name = 'xcfCrawlSpider'
#设置允许爬取的域
allowed_domains = ['xiachufang.com']
#设置起始的url
start_urls = ['http://www.xiachufang.com/category/']
rules = (
Rule(
LinkExtractor(allow=r'.*?/category/\d+/'),
callback='parse_item',
follow=True,
process_links='check_category_url'
),
)

3、rules

CrawlSpider使用rules属性决定爬虫爬取的规则,并将匹配后的url请求提交给引擎,完成后续的爬取工作。

link_extractor:

是一个Link Extractor对象,用于定义需要提取的链接

callback:

从link_extractor中每获取到链接得到Response时,会调用参数所指定的值作为回调参数,该回调函数接收一个response作为一个参数

follow:

是一个boolean值,指定了根据该规则从response提取的链接是否需要跟进

process_links:

指定spider中那个的函数将会被调用,从link_extractor中获取到链接列表时将会调用该函数,此方法用来过滤

process_request:

指定处理函数,根据该Rule提取到的每个Request时,该函数将会被调用,可以对Request进行处理,该函数必须返回Request或者None

注意:当编写爬虫规则时,避免使用parse作为回调函数

4、LinkExtractor

目的是提取连接

主要参数:
allow

满足括号中“正则表达式”的url会被提取,如果为空,则全部匹配

deny

满足括号中“正则表达式”的url一定不提取(优先级高于allow)

allow_domains

会提取的链接的domains

deny_domains

一定不会被提取连接的domains

restrict_xpaths

使用xpath表达式,和allow共同作用过滤连接

你可能感兴趣的:(CrawlSpider通用爬虫)