11.1 CrawlSpider 类简介
使用 Crawlspider 模板爬取新浪新闻
CrawlSpider 类是爬取一般网站最常用的 Spider 类。CrawlSpider 允许用户根据一定的 URL 规则提取跟进的链接,这是因为一般网站设计其 URL 构造都符合一定的规则,CrawlSpider 正是利用这种 URL 构造规则跟进链接,实现对全网站的爬取。
CrawlSpider 类除了从 Spider 类继承过来的属性外,其提供了新的属性。
1. rules
rules 是规则对象的集合,集合中的每条 Rule 对爬取网站的动作定义了特定表现,也就是说爬取规则就是在 rules 里面定义,如果多个 Rule 匹配了相同的链接,则根据它们在本属性中被定义的顺序,第一个会被使用。rules 最重要的参数是爬取规则 link_extractor,还有几个重要参数需要注意。
(1)callback 回调函数
这是一个可迭代对象或 string,若是 string,则 Spider 中同名的函数将会被调用。从 link_extractor 中获取到链接时,系统将调用该函数。该回调函数接受一个 response 作为其第一个参数,并返回一个包含 Item 及(或)Request 对象的列表。
需要注意的是,当使用 CrawlSpider 编写爬虫规则时,要避免使用 parse 作为回调函数。这是由于 CrawlSpider 使用了 parse 方法来实现其逻辑,如果覆盖了 parse 方法,CrawlSpider 将会运行失败。
(2)follow
follow 是一个布尔值,指定了根据该规则从 response 提取的链接是否需要跟进。
如果不指定回调函数,也就是 callback 为 None,follow 默认设置为 True,否则默认为 False。
(3)process_links
用来过滤从 link_extractor 中获取到的链接的函数。
(4)process_request
处理提取到的每个 request 的函数,主要用来过滤 request。
下面重点说一下爬取规则 link_extractor。
2. 爬取规则
link_extractor 也被称为链接提取器,人们使用它来定义具体的爬取规则,即如何从爬取到的页面提取链接。link_extractor 是链接提取器与方便的过滤选项,常用参数如下。
(1)allow:值为正则表达式或正则表达式列表,当 URL 匹配这个正则时提取。如果没有指定 allow 的值或者值为空,它将匹配所有链接。
(2)deny:值为正则表达式或正则表达式列表,当 URL 匹配这个正则时不提取此链接。它优先于 allow 参数。如果没有给出或为空,它不会排除任何链接。
(3)allow_domains 和 deny_domains:允许爬取和不爬取的域名。
(4)unique:是一个布尔值,对提取的链接应用或不应用重复过滤。
上面简单介绍了 CrawlSpider 的概念和常用参数。下节通过爬取房天下二手房房源的例子来具体演示如何使用 CrawlSpider。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论