记忆碎片之主动关闭scrapy+selenium+pyQt5爬虫系统

Pyqt5和Scrapy开发可视化爬虫 做了一个电商的爬虫,仅做学习使用 记录一下遇到的坑: 整个开发步骤为,利用scrapy爬几大电商网站的商品图片,然后开发UI,根据输入的信息,执行不同的爬虫。坑就主要在这个地方 1. 如何向scrapy爬虫传递配置信息,包括要爬取的电商网站(即要启动的spider),商品名称,数据库信息,图片保存路径?(不同的爬虫使用不同的配置) scrapy框架,在settings.py中设置整个项目的配置信... 阅读详情

适用场景:

有的时候,我们用scrapy写了一个爬虫,而且是用到了selenium和pyQt5写出的爬虫,
在GUI界面,我们需要用户输入爬虫的许可证序列号才可以使用我们写好的爬虫,一机一码的那种爬虫,当用户输入我们加密生成的许可证序列号之后才可以用到我们的爬虫系统,在这里面就会出现一些BUG比如:序列号验证之后,如果序列号是无效的,我们应该如何关闭爬虫系统呢,注意----此时程序已经开始运行了,GUI界面已经启动,而且程序在运行过程总,已经把序列号传到了验证系统,而且scrapy也已经初始化好了一个浏览器,那我们已经该怎样关闭爬虫系统,关闭scrapy生成的浏览器呢,但是GUI不能关闭,用户可以继续修改序列号,继续启动爬虫,继续验证序列号,这种循环系统该怎么实现呢?

主动触发关闭scrapy爬虫:

其实非常简单,我们先来看一下官方文档:

CloseSpider
exceptionscrapy.exceptions.CloseSpider(reason='cancelled')
# 可以从蜘蛛回调中引发此异常以请求关闭/停止蜘蛛。支持的参数:

# 参数:	reason (str) -- 关闭的原因
# 例如::

def parse_page(self, response):
    if 'Bandwidth exceeded' in response.body:
        raise CloseSpider('bandwidth_exceeded')

不错,我们要主动抛出一个异常,触发爬虫系统关闭,我在网上看到一些其他的方法,例如:

self.crawler.engine.close_spider(self, '商品链接输入错误,停止爬虫!')

可能有大佬在spider文件里面用了这个命令,但是我查了百度,基本上看不到详细的描述,强行使用这个命令,可能会导致报错,大概是找不到crawler这个属性,查了半天也不知道这个命令从哪儿引入的,怎么才能这样使用,所以我用了另一种办法

from scrapy.exceptions import CloseSpider
if True :
	pass
else:
	raise CloseSpider("商品链接输入错误,停止爬虫!")

在验证条件失败时,抛出异常,关闭爬虫系统,同事关闭selenium启动的浏览器,继续使用GUI就行
注意:当前的爬虫系统是用pyQt5封装好界面的,在GUI并不会看到报错信息,但是GUI启动时会启动一个黑框,在黑框里面会有详细的日志信息,不过这不影响我们使用爬虫系统
具体的报错信息是
在这里插入图片描述
这个爬虫系统也借鉴了许多前辈们的经验,我自己能力也得到了提升,比如,如何在GUI程序中启动不同的爬虫,或者传递不同的参数,或者pyQt5程序和scrapy之间的通信问题,又或者使用pyinstaller打包整个爬虫系统等等,收获还是蛮多的。
如果有开发GUI界面的scrapy的朋友遇到类似问题,可直接评论留言,有时间我会回复的。

Disk Drill 使用教程 Disk Drill只需单击几下,即可恢复USB闪存驱动器上已删除的数据,包括丢失的照片,文档和其他文件类型。Disk Drill是真正的多合一应用程序,可在Mac上恢复闪存驱动器。Disk Drill将自动应用最佳的笔式驱动器恢复算法来恢复Mac数据。 USB闪存驱动器是一种传输和存储信息的好方法,但是如果错误地丢失或删除了存储在其中的文件,会发生什么呢?当您需要Mac的闪存驱动器数据恢复软件时,Disk Drill是您的最佳选择。Disk Drill将扫描您的USB闪存驱动器(也称为笔式驱动器)并查找 阅读详情

相关推荐

通达信+大智慧数据同步存调DLL

数据同步存调DLL(通达信版+大智慧版)

guleba的博客 2050

PyQt5整合Scrapy和matplotlib实现可视化爬虫by墨阳剑(二)

part two 接上一部分:https://blog.youkuaiyun.com/qq_30613521/article/details/103754741 这部分主要讲PyQt5页面部分。主界面的功能就是收集用户输入的关键信息(搜索的关键字、百度AK、选择省份、excel数据本地存储路径、开启爬虫按钮,为了说清楚,首先一样化繁为简,化整为零分解。分为三部分: ① PyQt5界面布局 ...

qq_30613521的博客 1257

OCTA-500:用于光学相干断层扫描血管造影研究的视网膜数据集|文献速递-基于生成模型的数据增强与疾病监测应用

数据集提供了丰富的图像和注释,包括两种模态(OCT/OCTA体积)、六种投影类型、四种文本标签(年龄/性别/眼别/疾病)以及七种分割标签(大血管/毛细血管/动脉/静脉/2D FAZ/3D FAZ/视网膜层)。我们介绍了新的 OCTA-500 数据集,该数据集包含来自 500 名受试者的 OCTA 成像,并提供了丰富的图像和标注集。(C) OCTA-500 切片的人工标注示例。图 4. OCTA-500 数据集中文本标签的统计直方图:(a) 性别,(b) 眼别,(c) 年龄,(d) 疾病。

weixin_38594676的博客 1434

使用pyinstaller对scrapy+selenium+pyqt5项目进行打包常见问题总结以及主要过程记录

前一段时间构建了一个使用scrapy+selenium+pyqt5的爬虫可视化界面,用于爬取知乎、百度百家号以及新浪新闻,在界面调试无误后,就需要使用pyinstaller进行打包,将项目变成更容易移植的exe文件。这篇博文主要用于记录打包的主要过程以及问题的解决方法。 1. pyinstaller的安装 一般来说,使用常用的pip命令即可安装,但我在安装时遇到了如下问题: Installing build dependencies ... error ERROR: Command errored

MarrieChen的博客 2814

硬件设计--DC/DC电源芯片详解

本文参考:http://www.elecfans.com/article/83/116/2018/20180207631874.html https://blog.youkuaiyun.com/wangdapao12138/article/details/79763343 第一次写博客,不喜勿喷,谢谢!!! DC/DC电源指直流转换为直流的电源,从这个定义上看,LDO(低压差线性稳压器)芯片也应该属于D...

weixin_30794499的博客 7871

MATLAB小白也能搞定!BCT脑网络分析工具箱安装与入门指南

本文为零基础用户提供了一份详尽的BCT脑网络分析工具箱安装与入门指南。从MATLAB环境配置、BCT工具箱下载与路径添加,到连接矩阵构建、节点度与聚类系数等基础指标计算,手把手带领神经科学研究者跨越编程门槛,快速掌握脑影像数据分析的核心流程。

threejs5artist的博客 1089

PyQt5和Scrapy整合解决方案

PyQt5和Scrapy整合解决方案 实现爬虫功能 完成界面布局 整合PyQt5和Scrapy代码 打包 整体思路:在PyQt5窗口类中开一个进程运行Scrapy代码,并使用Queue进行通信。 实现爬虫功能 首先是Scrapy,笔者使用以下命令创建项目: scrapy startproject books cd books scrapy genspider book bo...

热爱代码 3198

060、模型蒸馏:把扩散模型压进单步的魔法

《端侧文生图模型蒸馏实战:从32步到1步的优化之道》摘要:针对边缘设备部署难题,本文分享了扩散模型蒸馏的核心经验。通过重构损失函数(感知损失+对抗训练+KL散度)、优化采样轨迹截取策略和改造学生模型架构,成功将Stable Diffusion压缩至单步推理。关键发现包括:小批量训练更有效、标签平滑保障生成多样性、双模型策略平衡质量与速度。在Cortex-A53芯片上实现300ms内生成,内存占用控制在200MB以下。特别强调工业部署需权衡压缩率与稳定性,建议保留迭代模式开关以适配不同场景需求。

2601_95651806的博客 149

Scrapy:Exceptions, Logging

Scrapy:Exceptions, Logging

AI路漫漫 434

从0到1构建数据分析AI Agent:数据采集、洞察生成与报告自动化

在企业数字化转型的今天,数据分析师80%的时间被消耗在重复取数、数据清洗、报表排版等低价值劳动上,真正用于深度业务洞察和决策支持的时间不足20%。本文将从核心概念、技术原理、代码实现、落地实践全维度,教你从0到1搭建一套完整的数据分析AI Agent系统,实现「用户用自然语言提需求→Agent自动采集多源数据→AI自动挖掘业务洞察→自动生成符合业务要求的多格式报告」的全链路自动化,平均可将需求响应速度从天级压缩到分钟级,释放70%以上的分析师人力成本。

AI Python 编程之道的博客 471

【EB-03】 AUTOSAR builder与EB RTE集成

打开EB工具后,在EB的步骤是:执行MultiTask(2)-> Mapping Component to Partitions(4)->Task Mapping(5)-> SvcAs_Trigger(7)-> Code Generation(8)如涉及新增BSW Module,也需要重复以上步骤。

libuping2023的博客 960

Python零基础入门教程:从环境搭建到实战项目完整指南

Python作为一门高级、解释型、通用的编程语言,以其简洁的语法和强大的可读性,成为初学者入门编程和快速开发的首选。其核心原理在于解释执行和动态类型,这使得开发者能够用更少的代码表达复杂逻辑,显著提升开发效率。在技术价值层面,Python凭借丰富的标准库和庞大的第三方生态,极大地降低了各类应用的开发门槛。其典型应用场景广泛覆盖Web开发、数据分析、人工智能、自动化脚本和科学计算等领域。本文聚焦于Python入门学习,系统讲解了从环境搭建、基础语法到核心库使用的完整路径,并提供了pip包管理配置、VS Cod

cuizhu0832的博客 368

USB驱动(URB)

本文介绍了Linux内核中USB驱动开发的核心概念URB(USB Request Block)。URB是主机与USB设备间传输数据的抽象结构体,包含目标设备、端点信息、数据缓冲区等关键字段。文章详细解析了URB的生命周期(分配、填充、提交、回调、释放)、四种传输类型(控制、批量、中断、等时)及其应用场景,并提供了鼠标设备的中断传输示例代码。最后强调了URB使用注意事项,包括DMA缓冲区分配、错误处理和资源释放等。URB作为USB驱动与内核通信的桥梁,是构建稳定USB驱动程序的基础。

m0_49476241的博客 915

在scrapy与selemium对接结束后,关闭浏览器的方法

参考https://blog.youkuaiyun.com/Hepburn_li/article/details/91039747博客。 一般在DownloaderMiddleware中建立browser对象。例如: class NewscrawlerDownloaderMiddleware: # Not all methods need to be defined. If a method is not defined, # scrapy acts as if the downloader mi

lcqin111的博客 894

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

scrapy框架爬虫利用selenium控制浏览器,实现自动登录和退出

一、控制浏览器的方法 本文主要是讲如何通过selenium来实现自动登录获取cooikes,自动退出浏览器 from selenium import webdriver browser = webdriver.Firefox(executable_path="######您的浏览器路径#####geckodriver.exe") # 等待3秒,用于等待浏览器启动完成,否则可能报...

fuyuan_603的博客 832

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Python +selenium 所有用例执行完后,再退出。进一步节省用例时间所有用例执行完后,再退出。进一步节省用例时间(新建测试交流群651385084)

Python +unittest 所有用例执行完后,再退出。进一步节省用例时间 一:使用unittest都知道,每运行一个用例,都要重启浏览器,登录。这样大大浪费时间。导致很多功能的用例都没有监控到:下面从几个方面来进行优化 1.teardown 方法下面不要用driver.quite()。因为这是每个用例运行完后,都要到这里,这里取消掉退出。 2.自定义一个登录(这里说的登录不是点击登录后

王子的博客 4094

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Scrapy 没有按照配置 CLOSESPIDER_ITEMCOUNT, CLOSESPIDER_TIMEOUT 来终止爬虫的问题

在settings中配置了关闭爬虫的相关扩展: CLOSESPIDER_TIMEOUT CLOSESPIDER_ITEMCOUNT CLOSESPIDER_PAGECOUNT CLOSESPIDER_ERRORCOUNT 或者是在命令行运行spider时,用命令行参数进行了相关设置: scrapy crawl xxxSpider -sCLOSESPIDER_ITEMCOUNT...

xiaoyu_wu的博客 1852

基于selenium和pyqt5的自动抢课助手

本设计的初衷在于…好吧我就是有一次没抢到线上课,然后有一个学期上了一学期的线下课…所以这次铁了心要抢到线上课!!!所以就有了这个软件的诞生首先说一下这个东西的不足把,其实挺致命的他目前的问题就在于,我还没给他添加定时自动抢课的功能,所以说…现在只能手动打开那个软件然后输上自己的账号密码,选择自己想要选的课程,点击确定之后就可以自动抢课了目前也没有添加保存密码功能,所以每一次都需要手动再把自己的账号密码打上去…以后有时间一定会加上去的!🕊。

qq_44913672的博客 2130

scrapy.Spider中close方法的作用

在scrapy中,需要实现的爬虫类都需要继承scrapy.Spider类,其中的源码解析: class Spider(object_ref): name = None #爬虫的名字,spider的名字定义了Scrapy如何定位(并初始化)spider custom_settings = None #当启动spider时,该设置将会覆盖项目级的相同设置. def __i...

qq_41020281的博客 8885

scrapy配置爬虫关闭的条件

在scrapy的默认配置文件中看到这四个配置: CLOSESPIDER_TIMEOUT = 0 CLOSESPIDER_PAGECOUNT = 0 CLOSESPIDER_ITEMCOUNT = 0 CLOSESPIDER_ERRORCOUNT = 0 这四个配置是配置爬虫自动关闭条件的,等于0代表不开启。 CLOSESPIDER_TIMEOUT 默认值:0 一个整数值,单位为秒。...

qq_41020281的博客 6212

scrapy主动触发关闭爬虫

项目需求:采集昨日产生的数据,比如新闻,需要避免数据重复,因为新闻都是按照发布时间逆序排列的,所以只需根据新闻发布时间进行过滤,当发现采集到比昨天更早的数据时关闭爬虫。 可以在直接spider、pipeline和downloaderMiddlewares中关闭爬虫 在spider中时在方法里直接写 self.crawler.engine.close_spider(self, 'respon...

fsh_walwal的博客 1万+

如何在运行中关闭scrapy

In spider, you can just throw CloseSpider exception. def parse_page(self, response): if ‘Bandwidth exceeded’ in response.body: raise CloseSpider(‘bandwidth_exceeded’) For others (middl...

qq_36329233的博客 2698

提前关闭Scrapy爬虫的设置

Scrapy的CloseSpider扩展会在满足条件时自动终止爬虫程序。可以设置CLOSESPIDER_TIMEOUT(秒)、CLOSESPIDER_ITEMCOUNT、CLOSESPIDER_PAGECOUNT、CLOSESPIDER_ERRORCOUNT分别代表在指定时间过后、在抓取了指定数目的Item之后、在收到了指定数目的响应之后、在发生了指定数目的错误之后就终止爬虫程序。通常情...

angbini7012的博客 295

强制退出scrapy

使用scrapy自带的closespider等方法是无法立刻退出spider的,它们总是会拖延一段时间。 使用os.abort方法退出spider,简单粗暴,立马见效。

科软搬砖人 1386

分布式爬虫关闭(scrapy)

分布式爬虫,scrapy框架

Caiabcd的博客 526

scrapy关闭爬虫

爬虫结束是一个很模糊的概念,在爬虫爬取过程中,爬取队列是一个不断动态变化的过程,随着request的爬取,又会有新的request进入爬取队列。进进出出。爬取速度高于填充速度,就会有队列空窗期(爬取队列中,某一段时间会出现没有request的情况),爬取速度低于填充速度,就不会出现空窗期。所以对于爬虫结束这件事来说,只能模糊定义,没有一个精确的标准。 利用scrapy的关闭spider扩展功能 #...

python学习者Joy.xiong的博客 3203
上一篇: 记忆碎片之使用pycharm+python3.7+pip安装pytorch-CPU
下一篇: 记忆碎片之scrapy新功能follow_all()
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值