使用CrawlSpider爬取全站数据。
CrawpSpider和Spider的区别
CrawlSpider使用基于规则的方式来定义如何跟踪链接和提取数据。它支持定义规则来自动跟踪链接,并可以根据链接的特征来确定如何爬取和提取数据。CrawlSpider可以对多个页面进行同样的操作,所以可以爬取全站的数据。CrawlSpider可以使用LinkExtractor用正则表达式自动提取链接,而不需要手动编写链接提取代码。
Spider和CrawlSpider都是Scrapy的Spider类的子类。
注意:CrawlSpider是不支持请求传参的!(多个parse函数的参数之间的来回传递)
CrawlSpider使用步骤
- 创建一个工程 XXXPro scrapy startproject XXXPro
- cd XXXPro
- 创建爬虫文件(CrawlSpider):scrapy genspider -t crawl xxx www.xxxx.com
- 链接提取器LinkExtractor:根据指定的规则(allow)(正则表达式)进行指定链接的提取
- 规则解析器Rule:将链接提取器提取到的链接进行指定规则(callback)的解析
爬取全页的链接

我们可以根据每页的链接形式,使用正则表达式来进行提取。
通过使用下面的链接提取器,可以得到所有页面的链接,而且虽然提取到的链接是不全的,CrawlSpider还会自动补全。
link = LinkExtractor(allow=r"/content/node_21745_") # 这个链接提取器是用于在页面源码中根据制定规则进行正则匹配的
爬取每个新闻详情页的url
link_detail = LinkExtractor(allow=r"/content/20")
补充规则解析器
rules = (Rule(link, callback="parse_item", follow=False), # #follow=True:可以将链接提取器 继续作用到 连接提取器提取到的链接 所对应的页面中Rule(link_detail, callback="parse_detail", follow=False))
parse解析函数
# 解析新闻标题def parse_item(self, response):# 注意:xpath表达式中不可以出现tbody标签a_list = response.xpath('/html/body/section[2]/div[3]/div[2]/div[1]/div[4]/ul/a')# print(li_list)for a in a_list:title = a.xpath('./li/p/text()').extract_first()item = SunproItem()item['title'] = title# print(" title:", title)yield itemprint(len(a_list))
# 解析新闻内容def parse_detail(self, response):# print("parse_detail正在执行")content = response.xpath('//*[@id="news_con"]//text()').extract()content = ''.join(content)item = DetailItem()item['content'] = content# print("news content:", content)yield item
pipelines管道类
class SunproPipeline:def process_item(self, item, spider):if item.__class__.__name__ == 'SunproItem':print(item['title'])else:print(item['content'])return item
注意要在setings.py中开启管道类
相关文章:
使用CrawlSpider爬取全站数据。
CrawpSpider和Spider的区别 CrawlSpider使用基于规则的方式来定义如何跟踪链接和提取数据。它支持定义规则来自动跟踪链接,并可以根据链接的特征来确定如何爬取和提取数据。CrawlSpider可以对多个页面进行同样的操作,所以可以爬取全站的数据。CrawlSpid…...
【JUC】Java并发编程从挖坑到入土全解(4-一文讲通LockSupport与线程中断->长图预警)
目录 LockSupport与线程中断 线程中断机制 什么是中断机制? 与中断相关的3个API 如何停止中断运行中的线程? 当前线程的中断标识为true,是不是线程就会立刻停止? 如何理解静态方法Thread.interrupted() LockSupport是什么…...
Springboot学习笔记——3
Springboot学习笔记——3 一、热部署1.1、手动启动热部署1.2、自动启动热部署1.3、热部署范围配置1.4、关闭热部署 二、配置高级2.1、第三方bean属性绑定2.2、松散绑定2.3、常用计量单位应用2.4、bean属性校验2.5、进制数据转换规则 三、测试3.1、加载测试专用属性3.2、加载测试…...
jupyter 切换虚拟环境
当前只有两个环kernel 我已经创建了很多虚拟环境,如何在notebook中使用这些虚拟环境呢?请看下面 比如说我要添加nlp 这个虚拟环境到notebook中 1. 切换到nlp环境 2. 安装如下模块 pip install ipykernel 3. 执行如下命令 python -m ipykernel install …...
如何在Apache和Resin环境中实现HTTP到HTTPS的自动跳转:一次全面的探讨与实践
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
安全防御—密码学
1. 什么是APT? APT(Advanced Persistent Threat)是指高级持续性威胁,本质是针对性攻击。 利用先进的攻击手段对特定目标进行长期持续性网络攻击的攻击形式,APT攻击的原理相对于其他攻击形式更为高级和先进,…...
灯具从深圳寄国际物流到墨西哥
在国际贸易的日益频繁的今天,越来越多的企业开始将产品销往海外市场。然而,如何将这些产品安全、快速地送达目的地,成为了每个企业都需要面对的问题。对于灯具这种重量大、体积大的物品来说,如何选择合适的国际物流方式࿰…...
spark3使用hive zstd压缩格式总结
ZSTD(全称为Zstandard)是一种开源的无损数据压缩算法,其压缩性能和压缩比均优于当前Hadoop支持的其他压缩格式,本特性使得Hive支持ZSTD压缩格式的表。Hive支持基于ZSTD压缩的存储格式有常见的ORC,RCFile,Te…...
直线导轨精度等级在设备中有什么影响?
直线导轨的精度选择是直线导轨应用中的重要环节,需要根据具体的应用场景和设备要求来选择合适的精度等级(常见分3个等级:N/H/P)。下面我们来详细了解一下直线导轨的精度选择。 1、精度等级的概念:直线导轨的精度等级是…...
windows平台FairMOT的实现
环境:python3.6pytorch1.1.0torchvision0.3.0cuda9.2vs2015 该项目需要装3个c库(dcn_v2,apex,cython_bbox)特别坑,各种环境不匹配,各种bug。本人c小白,但是一路摸索总算成功了。下面…...
系统架构设计:12 论软件维护方法及其应用
目录 一 软件维护方法 1 影响软件维护工作的因素 2 软件维护类型 (1)正确性维护...
SS命令使用介绍
ss 一. 命令介绍 先使用手册查看命令介绍信息 NAME ss - another utility to investigate sockets DESCRIPTION ss is used to dump socket statistics. It allows showing information similar to netstat. It can display more TCP and state informations than other tools.…...
让你的对象变得拗口:JSON.stringify(),我把对象夹进了 JSON 魔法帽!
🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 引言 1. JSON.stringify() 属性 replacer …...
TDengine时序数据库学习使用
数据库要求: 1.目前服务器只能在linux运行,先安装服务器版本v1 2.下载与v1完全匹配的客户端版本v1(客户端与服务器的版本号不匹配可能访问不了服务器) 第一步 安装 安装服务器注意,安装教程: 使用安装…...
算法通过村第十三关-术数|青铜笔记|数字与数学
文章目录 前言数字统计专题符号统计阶乘0的个数 溢出问题整数反转字符串转整数回文数 进制专题七进制数进制转换 总结 前言 提示:生活是正着来生活,倒着去理解。 --戴维迈尔斯《社会心理学》 数学是学生时代掉头发的学科,那算法是毕业后掉头发…...
【SpringMVC篇】详解SpringMVC入门案例
🎊专栏【SpringMVC】 🍔喜欢的诗句:天行健,君子以自强不息。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 文章目录 🎍SpringMVC简介⭐优点 🌺SpringMVC入门…...
Programming abstractions in C阅读笔记:p166-p175
《Programming Abstractions In C》学习第58天,p166-p175总结。 一、技术总结 1.斐波那契数列(Fibonacci Sequenc) (1)斐波那契数列来源 斐波那契数列来自于《Liber Abaci》一书里兔子繁殖问题,相关资料很多,这里不赘述。 (2)关于《Libe…...
【List-Watch】
List-Watch 一、定义二、工作机制三、调度过程 一、定义 Kubernetes 是通过 List-Watch 的机制进行每个组件的协作,保持数据同步的,每个组件之间的设计实现了解耦。 用户是通过 kubectl 根据配置文件,向 APIServer 发送命令,在 …...
Pytorch因nn.Parameter导致实验不可复现的一种情况
文章首发见博客:https://mwhls.top/4871.html。 无图/格式错误/后续更新请见首发页。 更多更新请到mwhls.top查看 欢迎留言提问或批评建议,私信不回。 没解决,只是记录这种情况。 也可以多次实验取均值以避免结果复现。 场景 自己的模块中&a…...
MySQL表名区分不区分大小写,规则是怎样
MySQL表名区分不区分大小写,规则是怎样 mysql在linux中表名区分大小写,mysql在Windows中表名不区分大小写;可以在MySQL的配置文件“my.ini [mysqld]”中增加一行“lower_case_table_names 参数”来设置是否区分大小写。 mysql的表名区分大小写…...
lingbot-depth-vitl14镜像兼容性说明:insbase-cuda124-pt250-dual-v7底座深度适配细节
lingbot-depth-vitl14镜像兼容性说明:insbase-cuda124-pt250-dual-v7底座深度适配细节 1. 引言:为什么你需要关注这个深度估计模型? 如果你正在做机器人、自动驾驶或者AR/VR相关的项目,肯定遇到过这样的问题:怎么让机…...
PyTorch模型转ONNX避坑指南:从repeat_interleave到Concat类型匹配的实战解决方案
PyTorch模型转ONNX避坑指南:从动态张量到类型匹配的深度解决方案 在模型部署的最后一公里,PyTorch到ONNX的转换常常成为绊倒开发者的隐蔽陷阱。当你在本地训练环境获得完美指标后,准备将模型推向生产时,各种意想不到的导出错误可能…...
158页精品PPT | 某大型研发制造集团信息化IT规划整体方案
许多公司在数字化转型过程中会遇到一些共同的挑战,比如数据孤岛、技术更新慢、员工技能不足等。这些问题会导致企业效率低下,难以适应市场变化。针对这些问题,我们提出了一套解决方案,核心目标是帮助企业提升数字化水平࿰…...
TL494电源芯片避坑指南:常见设计误区与调试技巧
TL494电源芯片避坑指南:常见设计误区与调试技巧 在电源设计领域,TL494作为一款经典PWM控制芯片,凭借其稳定性和灵活性赢得了工程师的青睐。但就像任何工具一样,只有真正理解它的特性才能发挥最大价值。本文将带您深入TL494的设计细…...
鱼鱼刘怀旧手游|武林外传十年之约:同福灯火未熄,江湖老友归来
鱼鱼刘怀旧手游是国内人气老牌怀旧游戏专属平台,汇聚多款经典正版授权复刻手游,严格遵循端游原版设定匠心 1:1 还原复刻。本次特意为广大新手玩家准备了详细游戏攻略指南 ——岁月辗转,一晃十年。当年七侠镇的青石板还留着脚步,同…...
百川2-13B-Chat-4bits应用场景:开发者日常——代码审查、错误诊断、技术文档润色实战
百川2-13B-Chat-4bits应用场景:开发者日常——代码审查、错误诊断、技术文档润色实战 1. 引言:当大模型成为你的开发伙伴 想象一下这个场景:深夜,你盯着屏幕上那段运行了三次、报错信息却完全不同的代码,咖啡已经凉透…...
Janus-Pro-7B入门指南:零基础Python调用与第一个AI应用创建
Janus-Pro-7B入门指南:零基础Python调用与第一个AI应用创建 你是不是对AI大模型充满好奇,想亲手试试调用一个强大的模型,但又觉得门槛太高,被各种复杂的部署和配置劝退?别担心,今天我们就来彻底解决这个问…...
DevOps工具链集成:GitLab CI、Jenkins与Argo CD如何选?
DevOps工具链集成:GitLab CI、Jenkins与Argo CD如何选? 在DevOps实践中,工具链的选型直接影响交付效率与系统稳定性。GitLab CI、Jenkins和Argo CD作为主流工具,分别覆盖持续集成(CI)、持续交付࿰…...
行波管TWT聚焦系统硬核拆解:PPM vs PCM 核心区别、原理对比与工程选型全指南
对于行波管(TWT)研发工程师、射频微波专业学生、雷达 / 通信系统硬件从业者而言,电子注聚焦系统是决定器件生死的核心模块—— 它直接决定了电子注的流通率、注波互作用效率,甚至是器件的长期可靠性。在永磁聚焦方案中,…...
R包版本冲突别头疼:手把手教你降级igraph 2.1.1,解决monocle3的orderCells报错
R包版本冲突实战指南:精准降级igraph解决monocle3依赖问题 当你满怀期待地安装好monocle3准备进行单细胞拟时序分析时,突然弹出的nei() was deprecated in igraph 2.1.0报错就像一盆冷水浇灭了热情。这种R包版本冲突在生物信息学分析中屡见不鲜ÿ…...
