一、背景介绍

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

最近我用python开发了一个GUI桌面软件,作用是爬取YouTube指定视频的评论,6个关键字段,含:

评论id、评论内容、评论时间、评论作者昵称、评论作者频道、点赞数

1.1 软件说明

几点重要说明:

  1. 运行之前,先打开魔法
  2. Windows用户可直接双击打开使用,无需Python运行环境
  3. 可爬取指定数量评论,或者全部评论(不存在反爬问题)
  4. 排序方式支持:按日期排序/按热门排序
  5. 可爬取6个字段,含:评论id、评论内容、评论时间、评论作者昵称、评论作者频道、点赞数
  6. 其中,评论时间含绝对时间(年月日时分秒的格式)

1.2 效果演示

演示视频:

【Python爬虫GUI】我开发了一个采集YouTube评论的软件!

运行截图1:

运行截图2:

二、科普知识

2.1 关于视频id

油管视频id号,比如,https://www.youtube.com/watch?v=9lc6D6nPd38 这个视频链接的视频id就是"9lc6D6nPd38"。YouTube的每个视频都是如此。

2.2 关于评论时间

YouTube网页上是看不到绝对时间(年月日时分秒格式)的,只能看到相对时间(几个月前、几天前之类),此软件支持爬取绝对时间。

三、爬虫代码

3.1 界面模块

软件界面采用tkinter开发。

主窗口部分:

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

按钮控件部分:

# 界面设计
# 视频id
tk.Label(root, text='视频id:').place(x=30, y=50)
video_id = tk.StringVar()
video_id.set('')
entry = tk.Entry(root, bg='#ffffff', width=20, textvariable=video_id)
entry.place(x=160, y=50, anchor='nw') # 摆放位置

3.2 爬虫模块

通过请求YouTube评论的ajax接口实现,详见文末完整代码。

3.3 日志模块

好的日志功能,方便软件运行出问题后快速定位原因,修复bug。

核心代码:

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'
case_dir = r'./logs/'
info_handler = TimedRotatingFileHandler(filename=case_dir + info_file_name,
when='MIDNIGHT',
interval=1,
backupCount=7,
encoding='utf-8')

日志截图:

四、获取源码及软件

爱学习的小伙伴,完整python源码及可执行软件,我已打包好,并上传至我的微信公众号"老男孩的平凡之路",后台回复"爬油管评论软件"即可获取。

获取链接:【爬虫GUI】YouTube评论采集软件,突破反爬,可无限爬取!


我是@马哥python说,一名10年程序猿,持续分享python干货中!

【爬虫GUI】YouTube评论采集软件,突破反爬,可无限爬取!的更多相关文章

  1. Scrapy爬取美女图片第四集 突破反爬虫(上)

     本周又和大家见面了,首先说一下我最近正在做和将要做的一些事情.(我的新书<Python爬虫开发与项目实战>出版了,大家可以看一下样章) 技术方面的事情:本次端午假期没有休息,正在使用fl ...

  2. 第7章 Scrapy突破反爬虫的限制

    7-1 爬虫和反爬的对抗过程以及策略 Ⅰ.爬虫和反爬虫基本概念 爬虫:自动获取网站数据的程序,关键是批量的获取. 反爬虫:使用技术手段防止爬虫程序的方法. 误伤:反爬虫技术将普通用户识别为爬虫,如果误 ...

  3. 网络采集软件核心技术剖析系列(5)---将任意博主的全部博文下载到内存中并通过Webbrower显示(将之前的内容综合到一起)

    一 本系列随笔概览及产生的背景 自己开发的豆约翰博客备份专家软件工具问世3年多以来,深受广大博客写作和阅读爱好者的喜爱.同时也不乏一些技术爱好者咨询我,这个软件里面各种实用的功能是如何实现的. 该软件 ...

  4. 采用VSPD、ModbusTool模拟串口、MODBUS TCP设备进行Python采集软件开发

    版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 不少仪器/设备都提供了数据采集的接口,其中不少是串口或网络的MODBUS/TCP协议. 串口是比较简单 ...

  5. 网络采集软件核心技术剖析系列(7)---如何使用C#语言搭建程序框架(经典Winform界面,顶部菜单栏,工具栏,左边树形列表,右边多Tab界面)

    一 本系列随笔概览及产生的背景 自己开发的豆约翰博客备份专家软件工具问世3年多以来,深受广大博客写作和阅读爱好者的喜爱.同时也不乏一些技术爱好者咨询我,这个软件里面各种实用的功能是如何实现的. 该软件 ...

  6. 网络采集软件核心技术剖析系列(6)---将任意博主的全部博文下载到SQLite数据库中并通过Webbrower显示(将之前的内容综合到一起)

    一 本系列随笔目录及本节代码下载 自己开发的豆约翰博客备份专家软件工具问世3年多以来,深受广大博客写作和阅读爱好者的喜爱.同时也不乏一些技术爱好者咨询我,这个软件里面各种实用的功能是如何实现的. 该软 ...

  7. 网络采集软件核心技术剖析系列(4)---使用C#语言如何将html网页转换成pdf(html2pdf)

    一 本系列随笔概览及产生的背景 本系列开篇受到大家的热烈欢迎,这对博主是莫大的鼓励,此为本系列第四篇,希望大家继续支持,为我继续写作提供动力. 自己开发的豆约翰博客备份专家软件工具问世3年多以来,深受 ...

  8. 网络采集软件核心技术剖析系列(3)---如何使用C#语言下载博文中的全部图片到本地并可以离线浏览

    一 本系列随笔概览及产生的背景 本系列开篇受到大家的热烈欢迎,这对博主是莫大的鼓励,此为本系列第三篇,希望大家继续支持,为我继续写作提供动力. 自己开发的豆约翰博客备份专家软件工具问世3年多以来,深受 ...

  9. 网络采集软件核心技术剖析系列(2)---如何使用C#语言获得任意站点博文的正文及标题

    一 本系列随笔概览及产生的背景 本系列开篇受到大家的热烈欢迎,这对博主是莫大的鼓励,此为本系列第二篇,希望大家继续支持,为我继续写作提供动力. 自己开发的豆约翰博客备份专家软件工具问世3年多以来,深受 ...

  10. C#图片采集软件 自动翻页 自动分类(收集美图必备工具)(一)

    网站管理员希望将别人的整站数据下载到自己的网站里或者将别人网站的一些内容保存到自己的服务器上.从内容中抽取相关的字段,发布到自己的网站系统中.有时需要将网页相关的文件也保存到本地,如图片.附件等. 图 ...

随机推荐

  1. KingbaseES V8R3 备份恢复案例 -- sys_rman物理备份异机恢复

    案例说明: 在生产环境通过sys_rman执行了物理备份后,需要在异机构建测试环境,本案例描述了通过物理备份异机恢复的详细过程及操作. 适用版本: KingbaseES V8R3 节点信息: [kin ...

  2. KingbaseES 逻辑读与物理读

    oracle数据库中逻辑读,物理读 数据访问方式:数据库少不了和操作系统进行数据交互,表数据最好的方式是从数据库共享池中访问到,避免发生磁盘IO,当然如果共享池中没有访问到数据就难免发生磁盘IO. 物 ...

  3. 15 CSS总结

    15 CSS总结 到此,css的知识就结束了,掌握这些知识,搞爬虫足够了.如果朋友还有兴趣可以去css其他学习网站去看看其他的一些属性用法,(菜鸟教程 https://www.runoob.com/c ...

  4. #bitset优化,莫队#洛谷 5355 [Ynoi2017] 由乃的玉米田

    没有除法的版本 弱化版Blog 题目 分析 只针对除法而言,如果商很大直接用bitset判断是否存在, 否则直接预处理最近的答案判断是否在区间内即可,注意0要特判 代码 #include <cs ...

  5. Manacher小记

    目录 前言 洛谷 3805[模板]manacher算法 题目 分析 代码 洛谷 4555 最长双回文串 题目 分析 代码 洛谷 1659 拉拉队排练 题目 分析 代码 前言 皆移植于原csdn博客,略 ...

  6. flutter系列之:按比例缩放的AspectRatio和FractionallySizedBox

    目录 简介 AspectRatio FractionallySizedBox 总结 简介 我们在构建UI的时候,为了适应不同的屏幕大小,通常需要进行一些自适应的配置,而最常见的自适应就是根据某个宽度或 ...

  7. mybatis复习(三)映射文件属性详解和动态SQL

    mybatis映射文件属性详解和动态SQL笔记 <SELECT> id = "" 唯一标识parameterType = "" 表示传入SQL语句的 ...

  8. CabloyJS 4.22重磅推出弹出式页面交互风格

    升级说明 我们知道CabloyJS提供了pc=mobile+pad自适应布局机制,可以通过一套代码同时适配mobile端和pc端.基本思路就是优先适配mobile端,然后再把mobile端的交互体验带 ...

  9. Telnet qsnctfwp

    Windows 安装 Telnet 在控制面板的程序和功能中选择打开或关闭Windows功能 启用 Telnet 客户端并单击确认退出 启动终端,输入命令 telnet 打开 Telnet 客户端 在 ...

  10. 安装CentOS-6.3-i386-minimal

    服务器开发者都离不开linux,这里一步步讲下linux安装和开发环境部署 一.下载安装镜像文件 这里以安装CentOS-6.3-i386-minimal为例,这个自带安装软件最少,简单而小巧,偏于你 ...