Walks

网络安全爱好者

Python3学习系列(八):Scrapy用Rules和LinkExtractor爬取多页面

《Python3学习系列(八):Scrapy用Rules和LinkExtractor爬取多页面》

前言:

学习知识是要一步一步来的,下面为大家带来点新知识,爬虫的Rules规则,就是对爬取的网页中的链接进行分析,提取出我们需要的继续爬下去的链接,继续爬取下去。 

目录:

0x01:简析

0x02:Rule与LinkExtractor具体参数

0x03:代码实现与分析

 

0x01 简析

当我们想要提取start_urls中的Url中的链接时,可以加一个Rules,用来提取,该Rules为继承CrawlSpider才有的规则,相比于继承Spider

下面我们先初识一下这个规则

rules = [       
        Rule(LinkExtractor(allow=(r'http://exmaple.com/ershoufang/\d+',)), callback='parse_item'),       
    ]

        

        0x02 Rule与LinkExtractor具体参数

Rule对象

Role对象有下面参数

  • link_extractor:链接提取规则

  • callback:回调函数(如何处理)

  • cb_kwargs:附加参数,可以在回调函数中获取到

  • follow:是否对提取的网页进行进一步提取(默认:False)

  • process_links:处理所有的链接的回调,用于处理从response提取的links,通常用于过滤(参数为link列表)

  • process_request:链接请求预处理(添加header或cookie等)

 LinkExtractor

LinkExtractor常用的参数有:

  • allow:提取满足正则表达式的链接

  • deny:排除正则表达式匹配的链接(优先级高于allow

  • allow_domains:允许的域名(可以是strlist

  • deny_domains:排除的域名(可以是strlist

  • restrict_xpaths:提取满足XPath选择条件的链接(可以是strlist

  • restrict_css:提取满足css选择条件的链接(可以是strlist

  • tags:提取指定标签下的链接,默认从aarea中提取(可以是strlist

  • attrs:提取满足拥有属性的链接,默认为href(类型为list

  • unique:链接是否去重(类型为boolean

  • process_value:值处理函数(优先级大于allow

        

        0x03 代码实现和分析

# -*- coding: utf-8 -*-
#导入接下来要使用的类
from scrapy.spiders import CrawlSpider,Rule
from scrapy.linkextractors import LinkExtractor
#自定义的存放数据的类(容器)
from DoubanSpider.items import DoubanspiderItem


class DoubanSpider(CrawlSpider):
    name = 'douban'
    allowed_domains = ['movie.douban.com']
    start_urls = ['https://movie.douban.com/top250']
    #定义一个爬取规则,从start_urls中的网页提取LinkExtractor上规定的所有链接,callback为对这些链接如何处理
    rules =(
        Rule(LinkExtractor(allow=(r'https://movie.douban.com/subject/\d+')), callback='parse_item'),
        )

    def parse_item(self, response):
        item = DoubanspiderItem()
        item['title'] = "".join(response.xpath('//span[@property="v:itemreviewed"]/text()').extract())

        yield item

转载请注明来自:www.bywalks.com

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

59 + = 68