python爬虫:scrapy框架Scrapy类与子类CrawlSpider

简介: python爬虫:scrapy框架Scrapy类与子类CrawlSpider

Scrapy类

name 字符串,爬虫名称,必须唯一,代码会通过它来定位spider

allowed_domains 列表,允许域名

没定义 或 空: 不过滤,

url不在其中: url不会被处理,

域名过滤功能: settings中OffsiteMiddleware

start_urls:列表或者元组,任务的种子

custom_settings:字典,覆盖项目中的settings.py

crawler:Crawler 实例

settings:Settings 实例

logger:记录日志

from_crawler():类方法,创建spider时调用

start_requests():必须返回一个可迭代对象

make_requests_from_url(url):默认parse回调, dont_filter=True,不过滤url

parse(response): 默认回调方法, 返回值只能是Request, 字典和item对象,或者它们的可迭代对象

log(message[, level, component]):对logger的包装

closed(reason):spider结束时调用


参考文章

scrapy系列(三)——基础spider源码解析


CrawlSpider类

CrawlSpider继承于Spider,为全站爬取而生


rules:列表,元素为Rule类的实例,采集行为。类似Django的url匹配

如果有多个rule都匹配同一个链接,那么位置下标最小的一个rule将会被使用。


要request的地址和allow_domain里面的冲突,从而被过滤掉。

可以停用过滤功能。

yield Request(url, callback=self.parse_item, dont_filter=True)


__init__:执行了_compile_rules方法


parse:重写默认回调方法,调用方法_parse_response


parse_start_url:处理parse返回的response


_requests_to_follow:response中解析出目标url,并将其包装成request请求


_response_downloaded:_requests_to_follow的回调方法,作用就是调用_parse_response方法


_parse_response:spider._follow_links的值是从settings的CRAWLSPIDER_FOLLOW_LINKS值获取到的。


_compile_rules:将rule中的字符串表示的方法改成实际的方法


from_crawler:

Rule类

link_extractor:Link Extractor实例,解析规则。


callback:方法或字符串,回调方法,慎用parse做为回调方法


cb_kwargs:字典,用于给callback方法传递参数


follow:布尔对象,表示是当前response否继续采集。如果callback是None,那么它就默认为True,否则为False。


process_links:在crawlspider中的_requests_to_follow方法中被调用,元素为Link的列表作为参数,返回值也是一个元素为Link的列表,目标url是相对的链接,那么scrapy会将其扩展成绝对的


process_request:处理request

CrawlSpider样例

import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
class MySpider(CrawlSpider):
    name = 'example.com'
    allowed_domains = ['example.com']
    start_urls = ['http://www.example.com']
    rules = (
        # 提取匹配 'category.php' (但不匹配 'subsection.php') 的链接并跟进链接(没有callback意味着follow默认为True)
        Rule(LinkExtractor(allow=('category\.php', ), deny=('subsection\.php', ))),
        # 提取匹配 'item.php' 的链接并使用spider的parse_item方法进行分析
        Rule(LinkExtractor(allow=('item\.php', )), callback='parse_item'),
    )
    def parse_item(self, response):
        self.log('Hi, this is an item page! %s' % response.url)
        item = scrapy.Item()
        item['id'] = response.xpath('//td[@id="item_id"]/text()').re(r'ID: (\d+)')
        item['name'] = response.xpath('//td[@id="item_name"]/text()').extract()
        item['description'] = response.xpath('//td[@id="item_description"]/text()').extract()
        return item

参考文章:

scrapy系列(四)——CrawlSpider解析

Spiders-爬取规则(Crawling rules)

相关文章
|
1月前
|
安全 Python
在Python中导入类
在Python中导入类
21 1
|
2天前
|
Python
Python 一步一步教你用pyglet制作可播放音乐的扬声器类
Python 一步一步教你用pyglet制作可播放音乐的扬声器类
14 0
|
9天前
|
Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
51 0
|
9天前
|
索引 Python
python 格式化、set类型和class类基础知识练习(上)
python 格式化、set类型和class类基础知识练习
32 0
|
10天前
|
Python
python学习12-类对象和实例对象
python学习12-类对象和实例对象
|
1月前
|
Python
Python类(class)中self的理解
Python类(class)中self的理解
18 0
|
1月前
|
Python
Python类定义:从小白到专家的旅程
Python类定义:从小白到专家的旅程
8 0
|
1月前
|
Python
Python类与对象:深入解析与应用
本文介绍了Python中的核心概念——类和对象,以及它们在面向对象编程中的应用。类是用户定义的类型,描述具有相同属性和行为的对象集合;对象是类的实例,具备类的属性和方法。文章通过示例讲解了如何定义类、创建及使用对象,包括`__init__`方法、属性访问和方法调用。此外,还阐述了类的继承,允许子类继承父类的属性和方法并进行扩展。掌握这些概念有助于提升Python编程的效率和灵活性。
|
1月前
|
机器学习/深度学习 设计模式 开发者
python类用法(四)
python类用法(四)
18 0
|
1月前
|
Python
python类用法(三)
python类用法(三)
16 0

热门文章

最新文章