python爬虫scrapy之rules的基本使用

Posted Charles.L

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python爬虫scrapy之rules的基本使用相关的知识,希望对你有一定的参考价值。

Link Extractors

Link Extractors 是那些目的仅仅是从网页(scrapy.http.Response 对象)中抽取最终将会被follow链接的对象?

Scrapy默认提供2种可用的 Link Extractor, 但你通过实现一个简单的接口创建自己定制的Link Extractor来满足需求?

每个LinkExtractor有唯一的公共方法是 extract_links ,它接收一个 Response 对象,并返回一个 scrapy.link.Link 对象?Link Extractors,要实例化一次并且 extract_links 方法会根据不同的response调用多次提取链接?

Link Extractors在 CrawlSpider 类(在Scrapy可用)中使用, 通过一套规则,但你也可以用它在你的Spider中,即使你不是从 CrawlSpider 继承的子类, 因为它的目的很简单: 提取链接?

上面都是官网解释,看看就行了,这个Rule啊其实就是为了爬取全站内容的写法,首先我们继承的就不是scrapy.spider类了,而是继承CrawlSpider这个类,看源码就回明白CrawlSpider这个类也是继承scrapy.spider类。

  具体参数:

  allow:这里用的是re过滤,我们其实就是start_urls加上我们这个匹配到的具体链接下的内容。    LinkExtractor:故名思议就是链接的筛选器,首先筛选出来我们需要爬取的链接。

  deny:这个参数跟上面的参数刚好想反,定义我们不想爬取的链接。

  follow:默认是false,爬取和start_url符合的url。如果是True的话,就是爬取页面内容所有的以start_urls的url。

  restrict_xpaths:使用xpath表达式,和allow共同作用过滤链接。还有一个类似的restrict_css 

  callback:定义我们拿到可以爬取到的url后,要执行的方法,并传入每个链接的response内容(也就是网页内容)

  注意:rule无论有无callback,都由同一个_parse_response函数处理,只不过他会判断是否有follow和callback

from scrapy.spiders.crawl import Rule, CrawlSpider
from scrapy.linkextractors import LinkExtractor

  

示例:

from whole_website.items import DoubanSpider_Book
from scrapy.spiders.crawl import Rule, CrawlSpider
from scrapy.linkextractors import LinkExtractor


class DoubanSpider(CrawlSpider):
    name = "douban"
    allowed_domains = ["book.douban.com"]
    start_urls = [‘https://book.douban.com/‘]

    rules = [
        Rule(LinkExtractor(allow=‘subject/\d+‘),callback=‘parse_items)
    ]

    def parse_items(self, response):
        items = DoubanSpider_Book()
        items[‘name‘] = response.xpath(‘//*[@id="wrapper"]/h1/span/text()‘).extract_first()
        items[‘author‘] = response.xpath(‘//*[@id="info"]//a/text()‘).extract()
        data = {‘book_name‘:items[‘name‘],
                ‘book_author‘:items[‘author‘]
                }
        print(data)

  

 

 

 

参考地址:http://scrapy-chs.readthedocs.io/zh_CN/0.24/topics/link-extractors.html

以上是关于python爬虫scrapy之rules的基本使用的主要内容,如果未能解决你的问题,请参考以下文章

python爬虫之Scrapy框架,基本介绍使用以及用框架下载图片案例

python爬虫之Scrapy框架,基本介绍使用以及用框架下载图片案例

Python编程基础之(五)Scrapy爬虫框架

python爬虫scrapy之登录知乎

干货!一文教会你 Scrapy 爬虫框架的基本使用

Python 爬虫-Scrapy框架基本使用