【GUI开发】用python爬YouTube博主信息,并开发成exe软件

文章目录

  • 一、背景介绍
  • 二、代码讲解
    • 2.1 爬虫
    • 2.2 tkinter界面
    • 2.3 存日志
  • 三、软件演示视频
  • 四、说明

一、背景介绍

你好,我是@马哥python说,一名10年程序猿。

最近我用python开发了一个GUI桌面软件,目的是爬取相关YouTube博主的各种信息,字段包括:

视频标题、视频链接、博主名称、博主链接、国家、telegram链接、whatsapp链接、twitter链接、facebook链接、instagram链接。

以近期某热门事件为例。

演示视频:

用python爬YouTube博主,并开发成GUI桌面软件

运行截图:

爬取数据截图:

实现思路:
通过按指定关键词搜索视频,通过视频进入博主的主页简介,爬取博主的各种联系信息。
并把源码封装成exe文件,方便没有python环境,或者不懂技术的人使用它。

二、代码讲解

2.1 爬虫

本爬虫是通过selenium模拟手工搜索的过程,所以需要提前安装好chrome浏览器和chromedriver驱动。
安装chrome浏览器和chromedriver驱动的过程,请自行解决,不再赘述。
把chromedriver放到exe文件的旁边(同级目录下)即可。
展示部分核心代码:
初始化csv文件:

def init(self):with open(f'{self.query}.csv', 'a', newline='', encoding='utf_8_sig') as f:writer = csv.writer(f)writer.writerow(['视频标题', '视频链接', '博主名称', '博主链接', '国家', 'telegram链接', 'whatsapp链接', 'twitter链接', 'facebook链接', 'instagram链接'])

爬博主信息:

# 先解析出所有链接
contact_url_els = self.browser.find_elements(By.XPATH, '//*[@id="link-list-container"]/a')
for j in contact_url_els:url = j.get_attribute('href')if "t.me" in url: # 电报链接de_url = unquote(url)de_url_dict = parse_qs(urlparse(de_url).query)url = de_url_dict.get("q")[0]telegram_url = urlif "wa.link" in url or "api.whatsapp.com" in url: # whatsapp链接de_url = unquote(url)de_url_dict = parse_qs(urlparse(de_url).query)url = de_url_dict.get("q")[0]whatsapp_url = urlif "twitter.com" in url: # twitter链接de_url = unquote(url)de_url_dict = parse_qs(urlparse(de_url).query)url = de_url_dict.get("q")[0]twitter_url = urlif "facebook.com" in url: # facebook链接de_url = unquote(url)de_url_dict = parse_qs(urlparse(de_url).query)url = de_url_dict.get("q")[0]facebook_url = urlif "instagram.com" in url: # instagram链接de_url = unquote(url)de_url_dict = parse_qs(urlparse(de_url).query)url = de_url_dict.get("q")[0]instagram_url = url

2.2 tkinter界面

界面部分代码:

# 创建主窗口
root = tk.Tk()
root.title('YouTube爬虫-定制化开发 | 马哥python说')
# 设置窗口大小
root.minsize(width=850, height=650)show_list_Frame = tk.Frame(width=800, height=450)  # 创建<消息列表分区>
show_list_Frame.pack_propagate(0)
show_list_Frame.place(x=30, y=120, anchor='nw')  # 摆放位置# 滚动条
scroll = tk.Scrollbar(show_list_Frame)
# 放到Y轴竖直方向
scroll.pack(side=tk.RIGHT, fill=tk.Y)

2.3 存日志

软件运行过程中,会在同级目录下生成logs文件夹,文件夹内会出现log文件,记录下软件在整个运行过程中的日志,方便长时间运行、无人值守,出现问题后的debug。
部分代码:

class Log_week():def get_logger(self):self.logger = logging.getLogger(__name__)# 日志格式formatter = '[%(asctime)s-%(filename)s][%(funcName)s-%(lineno)d]--%(message)s'# 日志级别self.logger.setLevel(logging.DEBUG)# 控制台日志sh = logging.StreamHandler()log_formatter = logging.Formatter(formatter, datefmt='%Y-%m-%d %H:%M:%S')# info日志文件名info_file_name = time.strftime("%Y-%m-%d") + '.log'# 将其保存到特定目录,ap方法就是寻找项目根目录,该方法博主前期已经写好。case_dir = r'./logs/'info_handler = TimedRotatingFileHandler(filename=case_dir + info_file_name,when='MIDNIGHT',interval=1,backupCount=7,encoding='utf-8')self.logger.addHandler(sh)sh.setFormatter(log_formatter)self.logger.addHandler(info_handler)info_handler.setFormatter(log_formatter)return self.logger

三、软件演示视频

演示视频: 【爬虫演示】用python爬YouTube博主信息,并开发成GUI桌面软件!

四、说明

附完整源码:【GUI开发】用python爬YouTube博主信息,并开发成exe软件!


我是 @马哥python说,持续分享python源码干货中!


推荐阅读:【爬虫GUI】YouTube评论采集软件,突破反爬,可无限爬取!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/94582.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云网站备案详细流程_审核时间说明

腾讯云网站备案流程先填写基础信息、主体信息和网站信息&#xff0c;然后提交备案后等待腾讯云初审&#xff0c;初审通过后进行短信核验&#xff0c;最后等待各省管局审核&#xff0c;前面腾讯云初审时间1到2天左右&#xff0c;最长时间是等待管局审核时间&#xff0c;网站备案…

Python Opencv实践 - 凸包检测(ConvexHull)

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/stars.png") plt.imshow(img[:,:,::-1])img_contour img.copy() #得到灰度图做Canny边缘检测 img_gray cv.cvtColor(img_contour, cv.COLOR_BGR2GRAY) edges…

手写RPC框架--2.介绍Zookeeper

RPC框架-Gitee代码(麻烦点个Starred, 支持一下吧) RPC框架-GitHub代码(麻烦点个Starred, 支持一下吧) 该项目的RPC通信将采用NettyZookeeper&#xff0c;所以会在前两章介绍使用方法 介绍Zookeeper Zookeepera.概述1) 数据模型2) Watcher机制 b.安装和基本操作1) Java操作zooke…

前端Vue仿企查查 天眼查知识产权标准信息列表组件

引入Vue仿企查查天眼查知识产权标准信息列表组件 随着技术的不断发展&#xff0c;传统的开发方式使得系统的复杂度越来越高。在传统开发过程中&#xff0c;一个小小的改动或者一个小功能的增加可能会导致整体逻辑的修改&#xff0c;造成牵一发而动全身的情况。为了解决这个问题…

C# Solidworks二次开发:创建距离配合以及移动组件API详解

今天要讲的文章是关于如何创建距离配合和移动组件的API详解。 &#xff08;1&#xff09;创建配合API&#xff0c;CreateMate() 这个API的解释是根据指定的特性数据对象来创建配合&#xff0c;也就可以理解为输入什么样的特征对象就可以创建出什么配合&#xff0c;这个API的输…

async的用法

有以下几种形式 //从c11到c17有 template< class Function, class... Args > std::future<typename std::result_of<typename std::decay<Function>::type(typename std::decay<Args>::type...)>::type>async( Function&& f, Args&…

VBA:对Excel单元格进行合并操作

Sub hb()Dim nn 3For i 3 To 18If Range("b" & i) <> Range("b" & i 1) ThenRange("b" & n & ":b" & i).Mergen i 1End IfNextEnd Sub

JavaScript -【第一周】

文章来源于网上收集和自己原创&#xff0c;若侵害到您的权利&#xff0c;请您及时联系并删除~~~ JavaScript 介绍 变量、常量、数据类型、运算符等基础概念 能够实现数据类型的转换&#xff0c;结合四则运算体会如何编程。 体会现实世界中的事物与计算机的关系理解什么是数据并…

SpringCloudGateway集成SpringDoc

SpringCloudGateway集成SpringDoc 最近在搞Spring版本升级&#xff0c;按客户要求升级Spring版本&#xff0c;原来用着SpringBoot 2.2.X版本&#xff0c;只需要升级SpringBoot 2.X最新版本也就可以满足客户Spring版本安全要求&#xff0c;可是好像最新的SpringBoot 2.X貌似也不…

Empowering Long-tail Item Recommendation through Cross Decoupling Network (CDN)

Empowering Long-tail Item Recommendation through Cross Decoupling Network (CDN) 来源&#xff1a; KDD’2023Google Research 文章目录 Empowering Long-tail Item Recommendation through Cross Decoupling Network (CDN)长尾问题分析CDNItem Memorization and General…

【C++】SLT——Vector详解

本片要分享的是关于STL中Vector的内容&#xff0c;Vector的内容于string非常相似&#xff0c;只要会使用string那么学习Vector时会非常流畅。 目录 1.vector介绍 2.vector的简单实用 2.1.简单的无参构造 ​编辑2.2.简单带参构造 2.3.迭代器区间初始化 2.4.vector的遍历 …

JavaScript中的事件委托(event delegation)

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ JavaScript事件委托⭐ 事件冒泡&#xff08;Event Bubbling&#xff09;⭐ 事件委托的优点⭐ 如何使用事件委托⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启…