怎么做外语网站,网站开发加维护需要多少钱,佛山网页设计制作,免费的行情网站app代码一、背景介绍
1.1 爬取目标 我用Python独立开发了一款爬虫软件#xff0c;作用是#xff1a;通过搜索关键词采集ytb的搜索结果#xff0c;包含14个关键字段#xff1a;关键词,页码,视频标题,视频id,视频链接,发布时间,视频时长,频道名称,频道id,频道链接,播放数,点赞数,评…一、背景介绍
1.1 爬取目标 我用Python独立开发了一款爬虫软件作用是通过搜索关键词采集ytb的搜索结果包含14个关键字段关键词,页码,视频标题,视频id,视频链接,发布时间,视频时长,频道名称,频道id,频道链接,播放数,点赞数,评论数,视频简介。
软件是通过调用ytb的谷歌官方API实现并非通过网页爬虫所以稳定性较高
开通ytb的API【详细教程】手把手教你开通ytb官方API接口(youtube data api v3)
开发成界面软件的目的方便不懂编程代码的小白用户使用无需安装python无需改代码双击打开即用
软件界面截图
爬取结果截图 结果截图1
结果截图2
结果截图3
以上。
1.2 演示视频
软件使用演示不懂编程的小白直接看视频了解软件作用即可无需看代码 【软件演示】油管关键词搜索采集软件 1.3 软件说明
几点重要说明
以上。
二、代码讲解
2.1 调用API-搜索接口
先给大家看看搜索接口的返回json数据
首先定义接口地址作为请求地址
# 请求地址
url https://youtube.googleapis.com/youtube/v3/search定义一个请求头用于伪造浏览器
# 请求头
self.headers {Accept: */*,User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
}加上请求参数告诉程序你的爬取条件是什么
# 请求参数
params {part: snippet,maxResults: 25,q: search_keyword,key: self.API_KEY,pageToken: pageToken,order: self.sort_by,publishedBefore: str(self.end_date) T00:00:00Z,publishedAfter: str(self.start_date) T00:00:00Z,
}2.2 调用API-详情接口
同样先给大家看看详情接口的返回json数据
首先定义接口地址作为请求地址
# 请求地址
url https://youtube.googleapis.com/youtube/v3/videos?partsnippet%2CcontentDetails%2Cstatisticsid{}key{}.format(video_id, self.API_KEY)定义一个请求头用于伪造浏览器
# 请求头
self.headers {Accept: */*,User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
}下面就是发送请求和接收数据
# 发送请求
r requests.post(url, headersself.headers)
# 接收数据
json_data r.json()逐个解析字段数据以播放数为例
# 播放数
try:viewCount json_data[items][0][statistics][viewCount]
except:viewCount 其他字段同理不再赘述。
最后是把数据保存到csv文件
# 保存csv文件
with open(self.result_file, a, encodingutf_8_sig, newline) as f:writer csv.writer(f)writer.writerow([search_keyword, page, title, videoId, video_url, create_time, duration, channelTitle,channelId, channel_url, viewCount, likeCount, commentCount, desc])
self.tk_show(csv保存成功: self.result_file)我采用csv库保存结果实现每爬一条存一次防止中途异常停止丢失前面的数据。
完整代码中还含有读取API_KEY判断、循环结束条件判断、拼接频道URL、try异常保护、日志记录等关键实现逻辑。
2.3 API_KEY说明
API_KEY是访问ytb官方接口的密钥只有拿到密钥并配置到代码里才能正常调用API接口。
API开通的教程【详细教程】手把手教你开通ytb官方API接口(youtube data api v3)
拿到密钥之后配置到当前文件的config.json里面即可如下
另外魔法是一切的前提此处不便多说
2.4 软件界面模块
主窗口部分
# 创建主窗口
root tk.Tk()
root.title(爬油罐搜索软件v1.0 | 马哥python说 | 定制v:493882434)
# 设置窗口大小
root.minsize(width850, height650)
# 左上角图标
root.iconbitmap(mage.ico)输入控件部分
# keyword
tk.Label(root, justifyleft, text搜索关键词:).place(x30, y90)
entry_kw tk.Text(root, bg#ffffff, width70, height2, )
entry_kw.place(x125, y90, anchornw) # 摆放位置
tk.Label(root, justifyleft, text多关键词以|分隔, fgred, ).place(x630, y90)运行日志部分
# 运行日志
tk.Label(root, justifyleft, text运行日志:).place(x30, y280)
show_list_Frame tk.Frame(width780, height260) # 创建消息列表分区
show_list_Frame.pack_propagate(0)
show_list_Frame.place(x30, y310, anchornw) # 摆放位置底部版权部分
# 版权信息
copyright tk.Label(root, text马哥python说 All rights reserved., font(仿宋, 10), fggrey)
copyright.place(x290, y625)以上。
2.5 日志模块
好的日志功能方便软件运行出问题后快速定位原因修复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# 将其保存到特定目录ap方法就是寻找项目根目录该方法博主前期已经写好。case_dir r./logs/info_handler TimedRotatingFileHandler(filenamecase_dir info_file_name,whenMIDNIGHT,interval1,backupCount7,encodingutf-8)日志文件截图
以上。
三、获取源码及软件
完整python源码及exe软件微信公众号老男孩的平凡之路“后台回复”爬油管搜索视频软件即可获取。点击直达