首页
学习
活动
专区
工具
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中,对象的父类只能在类定义时指定,不能在实例化对象时动态设置。...在类工厂中,可以根据传入的参数来决定创建哪个类。...依赖注入是一种设计模式,它可以将对象的依赖关系从对象本身中解耦出来。这样,就可以在实例化对象时动态地注入它的依赖关系。

10810

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匹配规则就可以了

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

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

    2.1K40

    爬虫课堂(二十八)|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使用的编码

    33630

    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

    83470

    爬虫课堂(二十五)|使用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

    44620

    scrapy0700:深度爬虫scrapy深度爬虫

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

    1.9K20

    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中进行了验证后进入写代码阶段。

    71810

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

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

    62210

    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

    63440

    Scrapy框架的使用之Scrapy通用爬虫

    如果我们将各个站点的Spider的公共部分保留下来,不同的部分提取出来作为单独的配置,如爬取规则、页面解析方式等抽离出来做成一个配置文件,那么我们在新增一个爬虫的时候,只需要实现这些网站的爬取规则和提取规则即可...CrawlSpider是Scrapy提供的一个通用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.6K60

    普通爬虫有啥意思,我写了个通用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,**

    1.1K10
    领券