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

本文涉及的产品
云解析DNS-重点域名监控,免费拨测 20万次(价值200元)
简介: 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)

相关文章
|
3月前
|
缓存 供应链 芯片
电子元件类商品 item_get - 商品详情接口深度分析及 Python 实现
电子元件商品接口需精准返回型号参数、规格属性、认证及库存等专业数据,支持供应链管理与采购决策。本文详解其接口特性、数据结构与Python实现方案。
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
533 6
|
8月前
|
人工智能 Python
[oeasy]python083_类_对象_成员方法_method_函数_function_isinstance
本文介绍了Python中类、对象、成员方法及函数的概念。通过超市商品分类的例子,形象地解释了“类型”的概念,如整型(int)和字符串(str)是两种不同的数据类型。整型对象支持数字求和,字符串对象支持拼接。使用`isinstance`函数可以判断对象是否属于特定类型,例如判断变量是否为整型。此外,还探讨了面向对象编程(OOP)与面向过程编程的区别,并简要介绍了`type`和`help`函数的用法。最后总结指出,不同类型的对象有不同的运算和方法,如字符串有`find`和`index`方法,而整型没有。更多内容可参考文末提供的蓝桥、GitHub和Gitee链接。
208 11
|
11月前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
511 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
9月前
|
存储 C语言 Python
[oeasy]python077_int类型怎么用_整数运算_integer_进制转化_int类
本文主要讲解了Python中`int`类型的应用与特性。首先回顾了`int`词根的溯源,探讨了整型变量的概念及命名规则(如匈牙利命名法)。接着分析了整型变量在内存中的存储位置和地址,并通过`type()`和`id()`函数验证其类型和地址。还介绍了整型变量的运算功能,以及如何通过`int()`函数将字符串转化为整数,支持不同进制间的转换(如二进制转十进制)。此外,文章提及了关键字`del`的使用场景,对比了Python与C语言中`int`的区别,并总结了整型与字符串类型的差异,为后续深入学习奠定基础。
195 1
|
12月前
|
数据采集 存储 XML
python实战——使用代理IP批量获取手机类电商数据
本文介绍了如何使用代理IP批量获取华为荣耀Magic7 Pro手机在电商网站的商品数据,包括名称、价格、销量和用户评价等。通过Python实现自动化采集,并存储到本地文件中。使用青果网络的代理IP服务,可以提高数据采集的安全性和效率,确保数据的多样性和准确性。文中详细描述了准备工作、API鉴权、代理授权及获取接口的过程,并提供了代码示例,帮助读者快速上手。手机数据来源为京东(item.jd.com),代理IP资源来自青果网络(qg.net)。
|
数据采集 前端开发 中间件
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
528 4
|
Java C++ Python
Python基础---类
【10月更文挑战第10天】Python类的定义
200 2
|
索引 Python
python-类属性操作
【10月更文挑战第11天】 python类属性操作列举
144 1
|
设计模式 开发者 Python
Python类里引用其他类
Python类里引用其他类
178 4

推荐镜像

更多