Scrapy CrawlSpider中Rule中写allow的问题!

Scrapy框架利用CrawlSpider创建自动爬虫 一、适用条件    可以对有规律或者无规律的网站进行自动爬取  二、代码讲解   (1)创健scrapy项目 E:myweb>scrapy startproject mycwpjt New Scrapy project 'mycwpjt', using template directory 'd:\\python35\\lib\\site-packages\\s 阅读详情
# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule


class RulespiderSpider(CrawlSpider):
    name = 'wxapp'
    allowed_domains = ['ABBCD.XX']
    start_urls = ['https://www.ABCD.XX/page/1']

    rules = (
        #若还能发现同样规则的数据就拿出来
        Rule(LinkExtractor(allow=r'.+page/\d'), follow=True),
        #详情页面链接
        Rule(LinkExtractor(allow=r'.+\d\.html'),callback="parse_xxx",follow=False),
    )
    def parse_xxx(self, response):
        #获取标题名称
        title=response.xpath("//div[@class='article_container row  box']/h1/text()").get()
        print(title)

LinkExtractor的目的在于提取你所需要的链接

描述流程:

上面的一段代码,表示查找以初始链接start_urls 初始化Request对象。

(1)翻页规则

该Request对象必须满足Rule第一条规则,从https://www.ABCD.XX/page/1这个初始链接的页面中获得类似于https://www.ABCD.XX/page/XXX的链接,一直到结束。

(2)页面响应规则

在此期间,从https://www.ABCD.XX/page/XXX这种链接中获取https://www.ABCD.XX/XXX.html的链接,然后调用回调函数parse_xxx,在这个回调函数中下载response从而通过xpath语法获取title。

1、从referer链接获取类似的链接【(1)的实现】;2、从referer链接获得下一层的链接,从而获得title,已经打印了出来【(2)的实现】


在rules中,设置了两条规则

.+的意思是前面任意个字符,不加.+则默认,前缀是站点链接https://www.ABCD.XX/

(1)第一条规则的allow:.+page/\d

作用是从原始链接(refer link你所寻找到的链接的来源链接地址)一直匹配到获取https://www.ABCD.XX/page/这个字符串为止,后面的\d才是关键,只要有数字即可,综合两者就形成了链接:https://www.ABCD.XX/page/XXX,fellow=True的作用时,每更换一个refer link,在这个链接中就要去寻找满足第一条规则的链接,周而往复,找完为止。

(2)第二条规则的allow:.+\d.html

从你的refer link中匹配到https://www.ABCD.XX这个字符串,后面的\d才是关键,只要有数字即可,综合两者就形成了链接:https://www.ABCD.XX/XXX.html,然后将这个Request对象,调用回调函数,下载Response的对象,进而获得你所需要的数据。


以上rules对allow的解释是相对路径,绝对路径老失败就不谈了!!!

关于rule中LinkExtractors的更多规则解释:请见链接https://scrapy-chs.readthedocs.io/zh_CN/1.0/topics/link-extractors.html

这个爬虫项目完美的翻页Rule是

rules = (
        
        #Rule(LinkExtractor(allow=r'page/\d'), follow=True),
        #每次只取下一页,,xpath的语法避免了取到最后一页,前一页或者下一页之前的页码!
        Rule(LinkExtractor(restrict_xpaths=("//div[@class='pagination']/*[not(@class='extend')][last()]")),follow=True),
        #详情页面链接迭代器
        #Rule(LinkExtractor(allow=r'\d\.html'),callback="parse_xxx",follow=False)
        #xpath找到详情页面的所有满足条件的a标签对象形成列表,但是scrapy将其变为识别为迭代器用
        Rule(LinkExtractor(restrict_xpaths=("//div[@class='thumbnail']/a[@class='zoom']")),callback="parse_xxx")
    )

注:年轻就要多读书!!!

通用爬虫 crawlspider 多站点爬取 通用爬虫scrapy 一 crawlspider crawlspider 是scrapy提供的一个通用爬虫,crawlspider 继承了spider类,除了拥有spider类的所有方法和属性。crawlspider还拥有着自己的属性和方法 属性rules :它定义了爬取网站的规则,是一个包含一个或多个rule的列表,每个rule都对网站的爬取规则做了定义,crawlspider会对rules中... 阅读详情

相关推荐

AIOps探索 | 如何用大模型构建高效运维知识及智能问答平台(1)

好久没有分享AIOps相关干货了,最近大模型这么火,而且我们有客户已经基于大模型构建了知识及智能问答平台,需要在运维领域结合使用场景进行应用。为此,楼主从头到尾声梳理了一遍大模型在运维领域构建知识及智能问答平台的应用场景、技术实现,总结出来供大家一同探索,希望对大家理解和运用大模型有一定帮助~

智能运维及数据中台探索 2810

scrapy 使用crawlspider rule不起作用的解决方案

scrapy 使用crawlspider rule不起作用的解决方案

weixin_46020146的博客 219

ARM Cortex平台NEON指令集优化实战指南

本文为ARM Cortex平台开发者提供了一份全面的NEON指令集优化实战指南。文章从NEON的SIMD架构原理讲起,详细介绍了开发环境搭建、NEON内联函数与自动向量化两种核心编程方法、关键数据类型与指令,并通过图像饱和运算、矩阵乘法等实战案例,深入解析了性能调优技巧与常见避坑指南,旨在帮助开发者充分释放ARM处理器的并行计算潜力。

weixin_29162439的博客 260

python_爬虫 23 Scrapy框架之(九)Scrapy爬虫实战

目录 实战1:爬取简书页面内容并同步保存到数据库 项目目录: spider/js.py items.py pipelines.py settings.py start.py mysql 表结构 结果: 代码 实战2:爬取简书页面内容并使用 twisted 异步保存到数据库 pipelines.py settings.py 代码 实战3:将 selenium + chromedriver 集成到 scrapy ,爬取并异步保存到数据库 项目目录: spider/js.py..

qq_30346413的博客 1115

从零构建:四轴机械臂D-H参数建模与MATLAB实战指南

本文详细介绍了四轴机械臂D-H参数建模的完整流程与MATLAB实战应用。从机械臂运动学基础出发,解析D-H参数原理与坐标系建立规则,提供MATLAB Robotics Toolbox的安装、模型创建及正逆运动学求解的代码实现。特别针对四轴机械臂的逆运算优化、轨迹规划和奇异位形规避等高级应用给出实用解决方案,是机器人开发者的实战指南。

weixin_29062255的博客 419

告别环境报错:Qt Creator里配置Android SDK/NDK/JDK路径的完整避坑指南

本文详细解析了在Qt Creator中配置Android SDK/NDK/JDK路径的完整避坑指南,深入探讨了路径检测的内部机制、构建套件配置的隐藏逻辑以及项目级与全局配置的优先级。通过实际案例和高级排查技巧,帮助开发者解决常见的环境报错问题,提升Qt安卓开发效率。

weixin_42548829的博客 238

Scrapy爬虫框架使用简述

一、Scrapy简介: 1、scrapy框架的架构图如下 2、各个组件的功能 (1)、引擎(Scrapy Engine) 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。 (2)、调度器(Scheduler) 用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL的优先...

weixin_41267342的博客 675

【ARM CoreLink 系列 4 -- NIC-400 控制器详细介绍】

正常情况下,一个NIC的实现,可以包含一百多个master和几十个slave,每个master和每个slave都会有一些寄存器,这些寄存器可以被 programming,实际实践中就会对 AMIB 或者 ASIB 或者 IB,当它需要具有 programming的时候,给它指定一个node number。为什么指定Node Number呢?首先,从CPU的角度,它需要有一个1M对齐的地址空间,在这1M地址空间上,对每个ASIB或者AMIB这样的接口给它一个node number以后,

CodingCos的博客 5242

python爬虫scrapy之rules的基本使用

Link Extractors Link Extractors 是那些目的仅仅是从网页(scrapy.http.Response对象)中抽取最终将会被follow链接的对象。 Scrapy默认提供2种可用的 Link Extractor, 但你通过实现一个简单的接口创建自己定制的Link Extractor来满足需求。 每个LinkExtractor有唯一的公共方法是extract_li...

weixin_30656145的博客 218

JeecgBoot passwordChange 任意用户密码重置漏洞复现

​JeecgBoot 框架passwordChange接口存在任意用户密码重置漏洞,未经身份验证的远程攻击者可以利用此漏洞重置管理员账户密码,从而接管系统后台,造成信息泄露,导致系统处于极不安全的状态。

0xSec 2641

TC397 EB MCAL开发从0开始系列 之 [17.1] ETH配置实战 - ping/发送

TC397 MCAL 从0开始之 ETH ping测试

yy九歌的博客 1506

Crawl Spider 模板的使用

1.Spider模板 scrapy默认创建的spider模板就是basic模板,创建spider文件的命令是:scrapy genspider dribbble dribbble.com,查看spider模板的命令是:scrapy genspider --list; 在项目中明确指明使...

chuli0136的博客 245

基于GA-BP遗传算法优化神经网络的多输入多输出数据预测-Python代码实现

多输入多输出的GA-BP神经网络

2301_80449389的博客 2308

scrapy的crawlspider爬虫

对应的crawlspider就可以实现上述需求,能够匹配满足条件的url地址,组装成Reuqest对象后自动发送给引擎,同时能够指定callback函数 即:crawlspider爬虫可以按照规则自动获取连接

qq_74418371的博客 2103

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

scrapy--Rule()与LinkExtractor()函数理解

这两个函数用于CrawlSpider内的rules属性中,具体的参数用法网上有很多,这里不再赘述。我想说的是差点搞死我的几个注意点。 1.来源: from scrapy.contrib.spiders import Rule from scrapy.linkextractors import LinkExtractor 2.注意点: 1.rules内规定了对响应中url的爬取规则,爬取得到的url...

数据小丸子的博客 5719

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

scrapy CrawlSpider解析

CrawlSpider继承自Spider, CrawlSpider主要用于有规则的url进行爬取。 先来说说它们的设计区别: SpiderSpider类的设计原则是只爬取start_urls中的url,而CrawlSpider类定义了一些规则rules来提供跟进链接link的方便机制,从爬取的网页中获取link并继续跟进的工作。 先来看看刚创建一个crawlSpide...

weixin_30651273的博客 182

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Python的scrapy爬虫框架—Rule

解释: Rule是在定义抽取链接的规则,上面的两条规则分别对应列表页的各个分页页面和详情页,关键点在于通过restrict_xpath来限定只从页面特定的部分来抽取接下来将要爬取的链接。 follow=False(不跟进), 只提取首页符合规则的url,然后爬取这些url页面数据,callback解析 follow=True(跟进链接), 在次级url页面中继续寻找符合规则的url,如此循环,直...

顾清风.的博客 1723

scrapy获取a标签的连接_Scrapy爬虫之CrawlSpider

不点蓝字,我们哪来故事?01引言本篇文章我们来说说CrawlSpider。通过 Scrapy,我们可以轻松地完成一个站点爬虫的编写。但如果抓取的站点量非常大,假设爬取多个站点下多级链接下的内容,Spider 会显的力不从心。如果用Spider继续爬取深度网址需要使用xpath或css selector去解析response中想要继续爬取的网址,再用Scrapy.Request发送请求...

weixin_42522374的博客 486

Scrapy中的crawlspider

crawlspider 能自动的获取url并提交请求 命令:scrapy genspider -t crawl spidername 'example.cn' 所导入的模块 # -*- coding: utf-8 -*- import scrapy from scrapy.linkextractors import LinkExtractor from scrapy.spiders impo...

lonmar的博客 380

爬虫教程( 6 ) --- CrawlSpider、RedisCrawlSpider、Bloom Filter

追踪(CrawlSpider)、过滤(布隆过滤)、去重、解析

freeking101的博客 6559

scrapy野蛮式爬取(将军CrawlSpider,军师rules)

如果将Spider比作scrapy爬虫王国的一个元帅,那CrawlSpider绝对是元帅手底下骁勇善战的将军。而其rules,便是善于抽丝剥茧的军师。 以下便记录以下一个CrwalSpider的作战过程。 1、 首先创建scrapy项目 python -m scrapy startproject 项目名称 2、 创建CrawlSpider ...

linershigebaobao的博客 696

Scrapy--3 Scrapy CrawlSpider说明

Scrapy CrawlSpider说明 ------------------------------------问题---------------------------------------------- 之前的代码中,我们有很⼤⼀部分时间在寻找下⼀⻚的URL地址或者内容的 URL地址上⾯,这个过程能更简单⼀些吗? 思路: 1.从response中提取所有的标签对应的URL地址 2.⾃动的构造⾃⼰resquests请求,发送给引擎 ⽬标: 通过爬⾍了解crawlspider

qq_45451647的博客 348

Scrapy 规则化爬虫(1)——CrawlSpider及link_extractor

Scrapy 规则化爬虫(1)——CrawlSpider及link_extractor

lizhixin200的博客 993

Scrapy框架——CrawlSpider类爬虫案例_rules = (rule(linkextractor(allow=r"items "), call

创建完会模板后会生成一个tencent.py的文件Link Extractors 的目的很简单: 提取链接。每个LinkExtractor有唯一的公共方法是 extract_links(),它接收一个 Response 对象,并返回一个 scrapy.link.Link 对象。LinkExtractors要实例化一次,并且 extract_links 方法会根据不同的 response 调用多次提取链接。allow:满足括号中“正则表达式”的值会被提取,如果为空,则全部匹配。

2401_89224864的博客 329

CrawlSpider 详解

From:https://blog.youkuaiyun.com/weixin_37947156/article/details/75604163 CrawlSpider是爬取那些具有一定规则网站的常用的爬虫,它基于Spider并有一些独特属性 rules: 是Rule对象的集合,用于匹配目标网站并排除干扰parse_start_url: 用于爬取起始响应,必须...

墨鱼菜鸡 460
上一篇: 使用Anaconda,解决pip下载scrapy失败和配置python解释器的问题
下一篇: 透彻的掌握 Spring 中@transactional 的使用
AARM
博客等级 码龄10年 10粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值