码迷,mamicode.com
首页 > 编程语言 > 详细

python爬虫scrapy之rules的基本使用

时间:2017-12-04 13:09:19      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:web   res   actor   sub   domain   restrict   awl   items   ebs   

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的基本使用

标签:web   res   actor   sub   domain   restrict   awl   items   ebs   

原文地址:http://www.cnblogs.com/lei0213/p/7976280.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!