相关动态
使用Python写出一个GUI可视化爬虫工具总结分享
2024-12-18 10:30

前言:我本是一名前端开发,不能说熟悉…最起码前端目前主流技术 Vue React 还是 jQuery 都有使用过。可以说这三个也是包含最少 60%的使用场景了。突然转变去写 Python 真的很不适应,不过还好。也是一种锻炼。当初我的想法是 做一个配合 Java 来调用写好的 Python。当然啦,期间我也使用过 Nodejs 来写后端,结果不太理想。经过一周半的编写,调试,终于可以对接后端,我传递参数给接口,接口服务调用 Python 然后把数据返回给我的同时插入数据库。但是…我还是想的太简单了,中间各种问题层出不穷,真的要把我搞崩溃了。加班到十点多,回家了一直和朋友调试到凌晨,问题仅仅解决了一半…后来经过一番商讨,我反思自己,为什么要做的这么”完美“呢?能用不就好了。于是痛定思痛!想了一晚上,脑子里突然蹦出一个想法!我什么…呢?直呼握草,立马坐起来拍大腿!我记得 Python 好像是可以写桌面端应用的!于是次日上班。直接开干


软件运行时直接生成txt和csv两种文件。可选

操作流程

 

先看一下软件成品吧(截至文章发布前) 以及我的GitHub地址

样式可以用来编写

这款桌面端应用目前的功能包括但不限于:、、、、、、等

语言使用的是 Python39 用到的库包括但不限于 PyQt5、requests、BeautifulSoup、os、time、urllib、tldextract、random、psutil、chardet。 我就捡几个重点说说吧(仅限于个人理解)。

PyQt5: 这个库就是标题所写 GUI(Graphics User Interface,中文名称为图形用户界面,是计算机与其使用者之间的对话接口。我之前用的是 tk 界面实在是!太丑了

psutil: 专门用来获取操作系统以及硬件相关的信息,比如:CPU、磁盘、网络、内存等等

requests: 如你所见,就是用来请求的

序主要分为两个类:Spider 和 MainWindow。

Spider 类主要实现了以下几个方法

  • __init__方法:初始化Spider类的属性,包括关键词、页数、文件名、任务输出、进度输入和主窗口等。然后调用search_mobile_web方法开始爬取。
  • run_geticookie方法:用于获取cookie。
  • convert_params方法:将参数转换为列表。
  • set_ArrayList方法:用于获取URL的域名。
  • search_mobile_web方法:主要实现了爬取神马搜索引擎的搜索结果的功能。首先获取关键词和页数,然后循环爬取每一页的搜索结果。在爬取每一页的搜索结果时,先设置代理,然后发送请求,获取响应,解析响应,获取搜索结果的标题和URL,并将结果写入文件。最后关闭所有的TCP连接。

MainWindow 类主要实现了以下几个方法

  • __init__方法:初始化MainWindow类的属性,包括关键词、页数、文件名、任务输出、进度输入和主窗口等。然后创建控件,包括关键词输入框、页数输入框、文件名输入框、任务输出框、进度输入框、错误输出框、执行按钮、导入文件按钮、取消导入按钮和强行停止按钮。最后创建菜单栏和菜单。
  • show_setting_dialog方法:用于显示代理参数设置对话框。
  • show_error方法:用于在错误输出框中显示错误信息。
  • select_file方法:用于选择要导入的文件。
  • stop_script方法:用于停止程序的执行。
  • cancel_import方法:用于取消导入文件。
  • get_next_word方法:用于获取下一个要爬取的关键词。
  • run_script方法:用于执行爬虫程序。首先获取关键词、页数和文件名,然后创建Spider对象,并调用search_mobile_web方法开始爬取。最后将爬取结果输出到任务输出框中。如果出现错误,将错误信息输出到错误输出框中。

简单来说Spider负责主线程爬虫逻辑编写,而MainWindow就是负责 GUI 的绘制以及软件的操作反馈等。


使用Python写出一个GUI可视化爬虫工具总结分享

爬虫这块代码我就不介绍了。因为每个、任何一个爬虫都是独一无二的,无非就是 get 访问网页拿到源代码,然后通过各种方式例如类 ID 来进行定位 提取而已。

介绍Spider: 方法,这个方法可能不适合绝大部分人,因为我爬取的是神马搜索引擎,他的 cookie 是每次请求都会变化,如果你拿了一个一直用,不出五次,绝对反爬。所以我做的操作是 一个 cookie 就用两次。

下面是代码

 

介绍MainWindow

方法是用于在错误输出框中显示错误信息。该方法接受一个 message 参数,用于指定要显示的错误信息。在方法内部,使用 Qt 的 appendPlainText 方法将 message 添加到错误输出框中。该方法主要用于在程序执行过程中出现错误时,将错误信息显示给用户,方便用户进行排查和解决。该方法的代码如下

 

可能有的人就问了,为什么同样功能的代码要写两遍呢? 对,我也没办法技术有限。因为不同的类调用方法的话,针对于这个函数,我不太熟悉,其他函数我能调用,我也不知道这个为什么。于是我就写了一个静态的,外部可以直接,来调用,可是我本身函数如果调用的话是不可行的,因为的缺点有很多,但是对我来说,最重要的一条是

静态方法无法访问类的实例变量和方法,因为静态方法不会自动传递类的实例作为第一个参数。这意味着静态方法无法访问类的状态,也无法修改类的状态。

这也就意味着,我无法使用这个方法捕获错误,来展示到错误输出上去。所以无奈暂时写两个。

这几个方法很简单了,就是导入文件、退出软件、删除导入的文件。

这个方法我也折腾了一会,主要是,我的词语有两个途径,手动和文件。而且文件的词语量常常大于五十万,我目前是用一百万词量测试的。 下面看代码

 

首先判断导入的文件是否为空,如果为空,则弹出提示框,提示用户文件未导入,并返回 None。如果导入的文件不为空,则使用 Python 的内置函数 next 从文件中获取下一个关键词,如果获取成功,则返回该关键词。如果获取失败,则表示所有关键词已经查询完毕,此时在任务输出框中插入一条提示信息,并返回 None。

---------------------------END---------------------------

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

👉CSDN大礼包🎁全网最全《Python学习资料》免费赠送🆓(安全链接,放心点击

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

二、Python兼职渠道推荐*

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

四、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

👉CSDN大礼包🎁全网最全《Python学习资料》免费赠送🆓(安全链接,放心点击

    以上就是本篇文章【使用Python写出一个GUI可视化爬虫工具总结分享】的全部内容了,欢迎阅览 ! 文章地址:http://ww.kub2b.com/news/7035.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 http://ww.kub2b.com/mobile/ , 查看更多   
最新文章
智能家居“伪智能”、直播间买到的羽绒服穿不了……江苏一季度消费投诉热点出炉
4月9日,江苏省消费者权益保护委员会发布2025年一季度消费投诉及舆情热点报告。一季度全省消保委系统受理投诉51464件,接待消费
智能手机传感器及作用大盘点手机的作用「智能手机传感器及作用大盘点」
已经成为不可思议的小机器,几十年前,这样的设备只存在于科幻小说。如果回到几十年前,人们可能会认为是魔法。现在已经成为最普
您知道唐僧师徒在南通长牌中分别是谁吗?
《西游记》中,猪八戒与孙悟空对峙打斗时,曾经这样说“放生遭贬出天关,福陵山下图家业。我因有罪错投胎,俗名唤做猪刚鬣”,这
【华为】新版模拟器eNSP Lite安装攻略提前解锁华为手机模拟器「【华为】新版模拟器eNSP Lite安装攻略提前解锁」
新版模拟器eNSP Lite资源下载:华为新版模拟器eNSPLite镜像资源资源-CSDN文库    最近华为发布了新版模拟器eNSP Lite
Android监控虚拟键 android手机虚拟摄像头手机IM「Android监控虚拟键 android手机虚拟摄像头」
在工作中,camera这一块上,可能会有各种各样的需求。比如有人想新增一个虚拟摄像头,当用户app打开摄像头设备时,打开的不是系
微信语音怎么提取到电脑【苹果安卓手机】苹果手机备份到电脑「微信语音怎么提取到电脑【苹果安卓手机】」
微信语音中可能保存着一些温馨记忆,如年迈父母发给自己的语音消息,微信语音中也可能保存着知识技能,如培训老师发给自己的各种
修成正果!安东尼已被通知入选2025年奈史密斯篮球名人堂
北京时间4月3日讯 据Shams Charania报道,十次入选NBA全明星的卡梅隆·安东尼已获通知,他被选入2025年奈史密斯篮球名人堂。曾六
在任意手机上使用带有图形化界面(GUI)的完整Linuxlinux手机「在任意手机上使用带有图形化界面(GUI)的完整Linux」
不过,在我们今天的任务中只有运行者两者。这篇教程不会讲述任何运行后的自定义使用。不同于之前的两次尝试——安装Window
腾讯史上最大就业计划技术岗超六成,大厂加码AI人才校招
4月17日,腾讯宣布启动史上最大就业计划,三年内将新增28000个实习岗位并加大转化录用,仅2025年将迎来10000名校招实习生。在大
纪律处罚消息两则:海港主教练穆斯卡特停赛1场罚款1万 & 广东男篮外援莫兰德罚款3万
各CBA俱乐部、赛区:2025年4月8日,2024-2025赛季CBA联赛季后赛12进8阶段场序467,上海久事大鲨鱼俱乐部久事篮球队与广东宏远华