首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Scrapy: CrawlSpider忽略在__init__中设置的规则

Scrapy是一个用于爬取网站数据的Python框架,它提供了强大的工具和库来简化爬虫的开发过程。CrawlSpider是Scrapy框架中的一个Spider类,它是基于规则的爬虫,可以通过定义规则来指定爬取的链接和处理的方式。

然而,CrawlSpider在初始化(init)方法中设置的规则会被忽略。这是因为CrawlSpider在初始化时会自动生成规则,它会根据start_urls和rules属性来生成爬取链接的规则。因此,在init方法中设置的规则不会被CrawlSpider使用。

为了解决这个问题,可以通过重写CrawlSpider的rules属性来自定义规则。在子类中重写rules属性,可以手动指定要爬取的链接和处理方式。例如:

代码语言:txt
复制
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor

class MySpider(CrawlSpider):
    name = 'myspider'
    start_urls = ['http://example.com']
    
    rules = (
        Rule(LinkExtractor(allow=r'/page/'), callback='parse_page', follow=True),
    )
    
    def parse_page(self, response):
        # 处理页面数据的回调函数
        pass

在上述示例中,我们重写了CrawlSpider的rules属性,并指定了一个规则,即匹配以"/page/"开头的链接,并使用parse_page方法来处理页面数据。

推荐的腾讯云相关产品:腾讯云服务器(CVM)、腾讯云容器服务(TKE)、腾讯云数据库(TencentDB)等。你可以通过腾讯云官方网站(https://cloud.tencent.com/)了解更多关于这些产品的详细信息和使用指南。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

__init__设置对象父类

1、问题背景Python,可以为对象设置一个父类,从而实现继承。但是,如果想要在实例化对象时动态地指定父类,则会出现问题。...例如,以下代码试图实例化Circle对象时,将它父类设置为Red或Blue:class Red(object): def x(self): print('#F00')class...(parent=Blue)blue_square = Square(parent=Blue)但是,这段代码会报错,因为Python,对象父类只能在类定义时指定,不能在实例化对象时动态设置。...类工厂,可以根据传入参数来决定创建哪个类。...依赖注入是一种设计模式,它可以将对象依赖关系从对象本身解耦出来。这样,就可以实例化对象时动态地注入它依赖关系。

7810

Scrapy框架-CrawlSpider

Spider和CrawlSpider区别 1.CrawlSpider介绍 通过下面的命令可以快速创建 CrawlSpider模板 代码: scrapy genspider -t crawl tencent...tencent.com 它是Spider派生类,Spider类设计原则是只爬取start_url列表网页,而CrawlSpider类定义了一些规则(rule)来提供跟进link方便机制,从爬取网页获取...Rules rules包含一个或多个Rule对象,每个Rule对爬取网站动作定义了特定操作。...scrapy genspider -t crawl tencent www.tencent.com 修改爬虫文件代码 import scrapy # 导入链接规则匹配类,用来提取符合规则链接 from...Spider和CrawlSpider区别 Spider:广义爬取,需要自己设定URL变化规则 CrawlSpider:深度爬取,只需要获取翻页每个按钮URL匹配规则就可以了

58420

三、scrapy后续 LinkExtractorsrules Logging发送POST请求内置设置参考手册

列表网页,而CrawlSpider类定义了一些规则(rule)来提供跟进link方便机制,从爬取网页获取link并继续爬取工作更适合。...rules rules包含一个或多个Rule对象,每个Rule对爬取网站动作定义了特定操作。如果多个rule匹配了相同链接,则根据规则在本集合中被定义顺序,第一个会被使用。...process_request:指定该spider哪个函数将会被调用, 该规则提取到每个request时都会调用该函数。...如果其返回一个 Response (可以与传入response相同,也可以是全新对象), 该response会被其他中间件 process_response() 方法处理。...设置(settings)提供了定制Scrapy组件方法。

2K40

爬虫课堂(二十八)|Spider和CrawlSpider源码分析

爬虫课堂(二十五)|使用CrawlSpider、LinkExtractors、Rule进行全站爬取章节说将对CrawlSpider源码进行一个讲解,这篇文章就是来还账,你们如果觉得好请点个赞。...2.1、CrawlSpider介绍及主要函数讲解 CrawlSpider是爬取一般网站常用spider。它定义了一些规则(rule)来提供跟进link方便机制。...例如我们爬虫课堂(二十五)|使用CrawlSpider、LinkExtractors、Rule进行全站爬取中讲解简书全站爬取时候使用方法,如下: class JianshuCrawl(CrawlSpider...pagelink = LinkExtractor(allow=pattern) # 可以写多个rule规则 rules = [ # 只要符合匹配规则rule中都会发送请求...(该回调函数可能是rule解析函数,也可能是 parse_start_url函数) #2、如果设置了回调函数(parse_start_url()),那么首先用parse_start_url

1.8K80

python爬虫入门(八)Scrapy框架之CrawlSpider

是Spider派生类,Spider类设计原则是只爬取start_url列表网页,而CrawlSpider类定义了一些规则(rule)来提供跟进link方便机制,从爬取网页获取link并继续爬取工作更适合...restrict_xpaths:使用xpath表达式,和allow共同作用过滤链接 rules rules包含一个或多个Rule对象,每个Rule对爬取网站动作定义了特定操作。...process_request:指定该spider哪个函数将会被调用, 该规则提取到每个request时都会调用该函数。...CrawlSpider, Rule # 导入链接规则匹配类,用来提取符合规则连接 from scrapy.linkextractors import LinkExtractor from TencentSpider.items.../td[5]/text()").extract()[0] yield item settings.py可以设置保存日志 通过setting.py中进行以下设置可以被用来配置logging

2.2K70

Python:CrawlSpiders

通过下面的命令可以快速创建 CrawlSpider模板 代码: scrapy genspider -t crawl tencent tencent.com 上一个案例,我们通过正则表达式,制作了新...列表网页,而CrawlSpider类定义了一些规则(rule)来提供跟进link方便机制,从爬取网页获取link并继续爬取工作更适合。...rules rules包含一个或多个Rule对象,每个Rule对爬取网站动作定义了特定操作。如果多个rule匹配了相同链接,则根据规则在本集合中被定义顺序,第一个会被使用。...(用来过滤request) 爬取规则(Crawling rules) 继续用腾讯招聘为例,给出配合rule使用CrawlSpider例子: CrawlSpider 版本 那么,scrapy shell...通过setting.py中进行以下设置可以被用来配置logging: LOG_ENABLED 默认: True,启用logging LOG_ENCODING 默认: 'utf-8',logging使用编码

32130

Scrapy框架crawlSpider使用——爬取内容写进MySQL和拉勾网案例

Scrapy框架中分两类爬虫,Spider类和CrawlSpider类。该案例采用CrawlSpider类实现爬虫进行全站抓取。...CrawlSpider是Spider派生类,Spider类设计原则是只爬取start_url列表网页,而CrawlSpider类定义了一些规则(rule)来提供跟进link方便机制,从爬取网页获取...– 应提取链接时,可以忽略扩展名列表。如果没有给出, 它会默认为 scrapy.linkextractor 模块定义 IGNORED_EXTENSIONS 列表。 restrict_xpaths...类构造函数 process_value 参数。 Rules:rules包含一个或多个Rule对象,每个Rule对爬取网站动作定义了特定操作。...process_request:指定该spider哪个函数将会被调用, 该规则提取到每个request时都会调用该函数。

1.2K60

Scrapy爬取自己博客内容

文件里定义抓取网页内容抽象出来数据结构定义,由于这里需要博客名称、发布日期、阅读量和评论量这四个字段,定义Item结构如下: from scrapy import Item,Field #...本例处理很简单,只是将接收Item对象写到一个json文件__init__方法以“w+”方式打开或创建一个item.json文件,然后把对象反序列化为字符串,写入到item.json文件...,对网页进行解析工作就要在这里实现了,此例定义爬虫类继承自CrawlSpider类。...rules:如果要爬取页面不是单独一个或者几个页面,而是具有一定规则可循,例如爬取博客有连续多页,就可以在这里设置,如果定义了rules,则需要自己定义爬虫规则(以正则表达式方式),而且需要自定义回调函数...page=3", ] 当爬取网页具有规则定义情况下,要继承CrawlSpider爬虫类,使用Spider就不行了,规则定义(rules)时,如果要对爬取网页进行处理,而不是简单需要Url

78170

爬虫课堂(二十五)|使用CrawlSpider、LinkExtractors、Rule进行全站爬取

一、CrawlSpider介绍 Scrapy框架中分两类爬虫,Spider类和CrawlSpider类。...CrawlSpider继承于Spider类,CrawlSpider是爬取那些具有一定规则网站常用爬虫,可以说它是为全站爬取而生。...1.2、rules rules包含一个或多个Rule对象,每个Rule对爬取网站动作定义了特定操作。如果多个Rule匹配了相同链接,则根据规则在本集合中被定义顺序,第一个会被使用。...如果callback为None,follow默认设置True,否则默认False。 process_links:是一个callable或string(该Spider同名函数将会被调用)。...,用来提取符合规则链接 from scrapy.linkextractors import LinkExtractor from scrapy.spiders import CrawlSpider,

1.3K70

Scrapy 框架(二)数据持久化

今天小婷儿给大家分享Scrapy 框架(二)数据持久化。...Scrapy 框架(二)数据持久化 scrapy数据持久化(将数据保存到数据库) 一、建立项目 1、scrapy startproject dushu 2、进入项目  cd dushu   执行:scrapy...3、模板CrawlSpider具有以下优点: 1)继承自scrapy.Spider; 2)CrawlSpider可以定义规则 解析html内容时候,可以根据链接规则提取出指定链接,然后再向这些链接发送请求...; 所以,如果有需要跟进链接需求,意思就是爬取了网页之后,需要提取链接再次爬取,使用CrawlSpider是非常合适; 3)模拟使用: a: 正则用法:links1 = LinkExtractor(...7、pipelines.py(yield后会回到pipelines.py) 1)写def __init__(self): 和 def close_spider(self,spider): 2)连接mysql

41720

scrapy0700:深度爬虫scrapy深度爬虫

深度爬虫概述 爬虫程序,主要是用与数据采集处理一种网络程序,操作过程针对指定url地址进行数据请求并根据需要采集数据,但是实际项目开发过程,经常会遇到目标url地址数量不明确情况,如之前章节中提到智联招聘项目...深度爬虫可以通过不同方式实现,urllib2和requesets模块通过轮询数据筛选得到目标url地址,然后进行循环爬取数据即可,scrapy主要通过两种方式进行处理: 通过Response对象地址序列和...Request对象请求处理完成深度采集 通过CrawlSpider类型请求链接提取规则自动进行深度数据采集处理 2....scrapy提供封装各项深度爬虫功能 scrapy.CrawlSpider是从scrapy.Spider继承并进行功能扩展类型,该类,通过定义Url地址提取规则,跟踪连接地址,从已经采集得到响应数据中继续提取符合规则地址进行跟踪爬取数据...类型,主要目的是用于定义链接提取匹配方式 该类方法extract_link()用于从响应对象response中提取符合定义规则链接 该类型只会被实例化一次,但是每次采集得到数据时重复调用 class

1.8K20

Scrapy笔记四 自动爬取网页之使用CrawlSpider

(1)概念与作用: 它是Spider派生类,首先在说下Spider,它是所有爬虫基类,对于它设计原则是只爬取start_url列表网页,而从爬取网页获取link并继续爬取工作CrawlSpider...rules包含一个或多个Rule对象,Rule类与CrawlSpider类都位于scrapy.contrib.spiders模块。...于CrawlSpider使用parse方法来实现其逻辑,如果您覆盖了parse方法,crawlspider将会运行失败。 follow:指定了根据该规则从response提取链接是否需要跟进。...shell验证 开始编写代码之前,使用scrapyshell查看使用SmglLinkExtractor在网页获取到链接: scrapy shell http://blog.csdn.net/u012150179...注意:shell并不对提取到link进行跟进。 在这里不得不提就是scrapy shell是对调试、验证很有用交互工具。应该掌握。 shell中进行了验证后进入写代码阶段。

68310

MySQL:深入理解复制忽略规则

本文中,我们将详细介绍这些配置选项作用和如何使用它们。 1....它值是一个以逗号分隔完全限定表名列表(即数据库名.表名)。 例如,假设我们有一个名为app.users_backup表,我们不想让它数据被复制。...例如,假设我们想要忽略所有以_backup结尾表,我们可以这样配置: STOP REPLICA; CHANGE REPLICATION SOURCE TO SOURCE_WILD_IGNORE_TABLE...总结 通过正确配置和应用上述复制忽略选项,我们可以更好地控制MySQL复制过程数据流,从而满足我们特定需求。...这些选项提供了强大而灵活方式来定制我们复制策略,帮助我们保持数据一致性同时,实现更为精细化数据管理。

27110

scrapy爬虫标准流程

生成一个新爬虫 scrapy genspider example example.com 执行命令后会在spiders文件夹创建一个example.py文件。...pipeline主要是对spiders爬虫返回数据处理,这里我们可以让写入到数据库,也可以让写入到文件等等。...下面代码主要包括写入到json文件以及写入到数据库,包括异步插入到数据库,还有图片处理,这里我们可以定义各种我们需要pipeline,当然这里我们不同pipeline是有一定顺序,需要设置...导入CrawlSpider类和Rule from scrapy.spiders import CrawlSpider, Rule # 导入链接规则匹配类,用来提取符合规则连接 from scrapy.linkextractors...&start=0#a"] # Response里链接提取规则,返回符合匹配规则链接匹配对象列表 pagelink = LinkExtractor(allow=("start=\d

60440

Scrapy框架使用之Scrapy通用爬虫

如果我们将各个站点Spider公共部分保留下来,不同部分提取出来作为单独配置,如爬取规则、页面解析方式等抽离出来做成一个配置文件,那么我们新增一个爬虫时候,只需要实现这些网站爬取规则和提取规则即可...CrawlSpiderScrapy提供一个通用Spider。Spider里,我们可以指定一些爬取规则来实现页面的提取,这些爬取规则由一个专门数据结构Rule表示。...,本节实例我们会使用Processor来进行数据处理。...universal,我们新建一个__init__()方法,进行初始化配置,实现如下所示: from scrapy.linkextractors import LinkExtractor from scrapy.spiders...接下来Spider__init__()方法,start_urls配置改写如下所示: from scrapyuniversal import urls start_urls = config.get

2.5K60

普通爬虫有啥意思,我写了个通用Scrapy爬虫

接下来我们主要是讲解最常用爬虫模板——crawl模板,其他模板我们会在往后文章里讲解,敬请期待!!! CrawlSpider 使用crawl模板前,我们先要了解一下CrawlSpider。...rule规则: Rule(LinkExtractor(allow=r'/page/\d+', restrict_xpaths='//li[@class="next"]'),follow=True), 由于我们翻页页面...,所以我们可以设置如下rules规则: rules = ( Rule(LinkExtractor(allow=r'/author/\w+',restrict_xpaths='/html/body/...settings.py文件启动引擎,并在pipelines.py文件打印输出,运行结果如下: 通用配置抽取 有人可能说,就这?就一个Rule规则就实现了通用?等等,别急!!!...ItemLoaderclass CurrencySpider(CrawlSpider): name = 'currency' def __init__(self,name,*args,**

97510
领券