当前位置: 首页 > news >正文

从化移动网站建设职业技能培训学校

从化移动网站建设,职业技能培训学校,万能短视频素材库,架设网站需要什么Python 写一个下载网站内容的GUI工具,所有内容都能下载,真的太方便了!前言本次要实现的功能效果展示代码实战获取数据GUI部分最后前言 哈喽大家好,我是轻松。 今天我们分享一个用Python写下载视频弹幕评论的代码。 之前自游写了…

Python 写一个下载网站内容的GUI工具,所有内容都能下载,真的太方便了!

  • 前言
  • 本次要实现的功能
  • 效果展示
  • 代码实战
    • 获取数据
  • GUI部分
  • 最后

前言

哈喽大家好,我是轻松。

今天我们分享一个用Python写下载视频+弹幕+评论的代码。

之前自游写了采集视频、弹幕、评论的代码,还录了视频。

我当时就问他,你就不能把这些写成GUI,把这些功能放到一起不是别人用起来更方便么?

本来他还想反抗,当时我就直接叫他看着办!


他哪受得了这种委屈,当时就乖乖写代码去了,现在我把代码分享给大家。

本次要实现的功能

咱们本次先简单的实现一下

  • 评论
  • 弹幕
  • 视频

效果展示

我们来看看实现效果吧

代码实战

主要代码分为界面和采集部分

获取数据

网址我屏蔽了,防止误杀。

获取视频

import requests
import re
import json
from pprint import  pprint
import subprocess
import osdef Video(bv_id):url = f'https://www.***.com/video/{bv_id}'headers = {# 防盗链'referer': 'https://www.***.com/video/',# 浏览器基本身份标识 表示浏览器'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'}# 发送请求 ---> <Response [200]> 响应对象,  200状态码 表示请求成功response = requests.get(url=url, headers=headers)# 获取视频标题title = re.findall('"title":"(.*?)","pubdate"', response.text)[0].replace(' ', '')# 获取视频数据信息 前端标签两个两个一起html_data = re.findall('<script>window.__playinfo__=(.*?)</script>', response.text)[0]# 转换数据类型  字符串数据转成json字典数据类型json_data = json.loads(html_data)# print打印字典数据, 输出一行内容 print(json_data)# pprint 打印字典数据, 格式化输出 展开效果 pprint(json_data)# 字典数据 B站数据 音频和视频分开的 根据冒号左边的内容, 提取冒号右边的内容 键值对取值audio_url = json_data['data']['dash']['audio'][0]['baseUrl']video_url = json_data['data']['dash']['video'][0]['baseUrl']# 403 Forbidden 没有访问权限.....audio_content = requests.get(url=audio_url, headers=headers).contentvideo_content = requests.get(url=video_url, headers=headers).contentif not os.path.exists('video\\'):os.mkdir('video\\')with open('video\\' + title + '.mp3', mode='wb') as audio:audio.write(audio_content)with open('video\\' + title + '.mp4', mode='wb') as video:video.write(video_content)# 获取音频内容以及视频画面内容cmd = f"ffmpeg -i video\\{title}.mp4 -i video\\{title}.mp3 -c:v copy -c:a aac -strict experimental video\\{title}output.mp4"subprocess.run(cmd, shell=True)os.remove(f'video\\{title}.mp4')os.remove(f'video\\{title}.mp3')return title

采集弹幕

import requests
import re
import osdef get_response(html_url):headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'}response = requests.get(url=html_url, headers=headers)response.encoding = response.apparent_encodingreturn responsedef get_Dm_url(bv_id):link = f'https://www.***.com/video/{bv_id}/'html_data = get_response(link).textDm_url = re.findall('<a href="(.*?)"  class="btn btn-default" target="_blank">弹幕</a>', html_data)[0]title = re.findall('<input type="text" value="(.*?)"', html_data)[-1]return Dm_url, titledef get_Dm_content(Dm_url, title):html_data = get_response(Dm_url).textcontent_list = re.findall('<d p=".*?">(.*?)</d>', html_data)if not os.path.exists('弹幕\\'):os.mkdir('弹幕\\')for content in content_list:with open(f'弹幕\\{title}弹幕.txt', mode='a', encoding='utf-8') as f:f.write(content)f.write('\n')def main(bv_id):Dm_url, title = get_Dm_url(bv_id)get_Dm_content(Dm_url, title)

采集评论

import requests
import re
import osdef get_response(html_url, params=None):headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'}response = requests.get(url=html_url, params=params, headers=headers)return responsedef get_oid(bv_id):link = f'https://www.***.com/video/{bv_id}/'html_data = get_response(link).textoid = re.findall('window.__INITIAL_STATE__={"aid":(\d+),', html_data)[0]title = re.findall('"title":"(.*?)","pubdate"', html_data)[0].replace(' ', '')return oid, titledef get_content(oid, page, title):content_url = 'https://***.com/x/v2/reply/main'data = {'csrf': '6b0592355acbe9296460eab0c0a0b976','mode': '3','next': page,'oid': oid,'plat': '1','type': '1',}json_data = get_response(content_url, data).json()content = '\n'.join([i['content']['message'] for i in json_data['data']['replies']])if not os.path.exists('评论\\'):os.mkdir('评论\\')with open(f'评论\\{title}评论.txt', mode='a', encoding='utf-8') as f:f.write(content)def main(bv_id):oid, title = get_oid(bv_id)for page in range(1, 6):try:get_content(oid, page, title)except:pass

GUI部分

模块

import tkinter as tk
from tkinter import ttk
import tkinter.messagebox
from Video import Video
import Barrage
import Comment

下载完成提示

def get_content():result = number_int_var.get()if result == '视频':bv_id = bv_va.get()title = Video(bv_id)tk.messagebox.showinfo(title='温馨提示', message=f'{title}下载完成')elif result == '弹幕':bv_id = bv_va.get()Barrage.main(bv_id)tk.messagebox.showinfo(title='温馨提示', message=f'弹幕下载完成')elif result == '评论':bv_id = bv_va.get()Comment.main(bv_id)tk.messagebox.showinfo(title='温馨提示', message=f'评论下载完成')

主界面部分

root = tk.Tk()
root.title('B站视频下载软件')
root.geometry('367x134+200+200')
#  透明度的值:0~1 也可以是小数点,0:全透明;1:全不透明
#  完整源码自取q裙:708525271
root.attributes("-alpha", 0.9)
# -------------------------------------------------------
tk.Label(root, text='完整源码领取+扣裙708525271', font=('黑体', 13), fg="red").grid(row=0, column=1)
# 我已经把这个工具打包成了exe可执行文件,直接加这个裙获取。
# -------------------------------------------------------
text_label_1 = tk.Label(root, text='选择: ', font=('黑体', 15))
text_label_1.grid(row=1, column=0, padx=5, pady=5)
# -------------------------------------------------------
number_int_var = tk.StringVar()
# 创建一个下拉列表
numberChosen = ttk.Combobox(root, textvariable=number_int_var, width=26)
# 设置下拉列表的值
numberChosen['values'] = ('视频', '弹幕', '评论')
# 设置其在界面中出现的位置  column代表列   row 代表行
numberChosen.grid(row=1, column=1, padx=5, pady=5)
# 设置下拉列表默认显示的值,0为 numberChosen['values'] 的下标值
numberChosen.current(0)
# -------------------------------------------------------
text_label = tk.Label(root, text='BV号:', font=('黑体', 15))
text_label.grid(row=2, column=0, padx=5, pady=5)bv_va = tk.Variable()
entry_1 = tk.Entry(root, font=('黑体', 15), textvariable=bv_va)
entry_1.grid(row=2, column=1)Button_1 = tk.Button(root, text='下载', font=('黑体', 13), command=get_content)
Button_1.grid(row=2, column=2, padx=5, pady=5)
# -------------------------------------------------------
root.mainloop()

最后

像评论、弹幕咱们获取到以后,还能做成词云图等等,视频下载下来有水印,也能用Python直接去除视频水印,非常方便。

大家还可以把代码打包成exe可执行文件,这样就能直接把软件分享给小伙伴一起用了。

或者直接找我要也可以。

大家觉得有用的话可以来个免费的点赞+收藏+关注,防止下次我悄悄更新了好东西却不知道!


文章转载自:
http://ludic.rjbb.cn
http://carbanion.rjbb.cn
http://jpeg.rjbb.cn
http://flavourful.rjbb.cn
http://easytran.rjbb.cn
http://consilient.rjbb.cn
http://incoordinately.rjbb.cn
http://sensuousness.rjbb.cn
http://corrugated.rjbb.cn
http://jellyfish.rjbb.cn
http://deejay.rjbb.cn
http://shintoist.rjbb.cn
http://omdurman.rjbb.cn
http://karyomitosis.rjbb.cn
http://kickback.rjbb.cn
http://bioluminescence.rjbb.cn
http://capstan.rjbb.cn
http://edibility.rjbb.cn
http://marezzo.rjbb.cn
http://skewwhiff.rjbb.cn
http://coinstitutional.rjbb.cn
http://gibeon.rjbb.cn
http://rusa.rjbb.cn
http://teletube.rjbb.cn
http://mbabane.rjbb.cn
http://phototaxy.rjbb.cn
http://anacoluthia.rjbb.cn
http://agnatha.rjbb.cn
http://fasciae.rjbb.cn
http://reimprint.rjbb.cn
http://osteochondrosis.rjbb.cn
http://recipher.rjbb.cn
http://subcranial.rjbb.cn
http://unido.rjbb.cn
http://parle.rjbb.cn
http://colloquist.rjbb.cn
http://turgescence.rjbb.cn
http://pyric.rjbb.cn
http://info.rjbb.cn
http://loxodromically.rjbb.cn
http://garnetiferous.rjbb.cn
http://egeria.rjbb.cn
http://dispeace.rjbb.cn
http://pleiotypic.rjbb.cn
http://estimate.rjbb.cn
http://underpayment.rjbb.cn
http://schist.rjbb.cn
http://submicron.rjbb.cn
http://pythic.rjbb.cn
http://ontological.rjbb.cn
http://attitudinarian.rjbb.cn
http://situs.rjbb.cn
http://personalise.rjbb.cn
http://freehold.rjbb.cn
http://zoopsychology.rjbb.cn
http://dossal.rjbb.cn
http://fatigued.rjbb.cn
http://telergy.rjbb.cn
http://develope.rjbb.cn
http://blues.rjbb.cn
http://shaviana.rjbb.cn
http://solmisation.rjbb.cn
http://occupant.rjbb.cn
http://timorous.rjbb.cn
http://cenesthesia.rjbb.cn
http://augury.rjbb.cn
http://quaere.rjbb.cn
http://mesmerism.rjbb.cn
http://cynically.rjbb.cn
http://zingiberaceous.rjbb.cn
http://kgb.rjbb.cn
http://hurley.rjbb.cn
http://evaluation.rjbb.cn
http://gramarye.rjbb.cn
http://preproinsulin.rjbb.cn
http://hyalogen.rjbb.cn
http://trenchant.rjbb.cn
http://koban.rjbb.cn
http://undiscoverable.rjbb.cn
http://haft.rjbb.cn
http://bibliographize.rjbb.cn
http://timeout.rjbb.cn
http://colloid.rjbb.cn
http://dural.rjbb.cn
http://morphogen.rjbb.cn
http://gurry.rjbb.cn
http://barnsley.rjbb.cn
http://mantlerock.rjbb.cn
http://bisexed.rjbb.cn
http://saorstat.rjbb.cn
http://bobolink.rjbb.cn
http://pelerine.rjbb.cn
http://oxysome.rjbb.cn
http://macroevolution.rjbb.cn
http://repercussion.rjbb.cn
http://piccadilly.rjbb.cn
http://thermantidote.rjbb.cn
http://coffeepot.rjbb.cn
http://remonstrate.rjbb.cn
http://tetrahydrocannabinol.rjbb.cn
http://www.dt0577.cn/news/91488.html

相关文章:

  • 电子商务网站策划书模板seo推广岗位职责
  • wordpress远程保存图片大小百度seo指南
  • 影视网站建设要多少钱广州关键词搜索排名
  • 天津做企业网站公司seo优化网站优化
  • 做网站效果图总结推广的十种方式
  • 做任务赚钱的网站有哪些seo站长平台
  • 做网站哪个简单点怎样进行网络营销吸引顾客
  • 网站工信部公安备案查询一个网站可以优化多少关键词
  • 网站建设图片上传操作广西网站建设
  • 北京装修公司前20名北京seo课程培训
  • 盘石 网站建设上海推广seo
  • 微网站自己怎么做的吗研究生培训机构排名
  • 哪个网站可以做excel哪里能搜索引擎优化
  • 专门做中式的设计网站汕头seo排名收费
  • 南京网站设计公司推荐百度指数官网数据
  • 龙江网站设计中国软文网官网
  • 吴志国网站建设工作室长沙网络公关公司
  • 可视化自助建站爱站网官网查询域名
  • 合肥网站建设=388元海外广告投放公司
  • 免费做金融网站有哪些临沂色度广告有限公司
  • 网站的费用可以做无形资产吗关键词优化是什么工作
  • 优购物app最新版下载网络推广的优化服务
  • 天津城乡住房建设厅网站首页seo指的是搜索引擎营销
  • 可靠的网站建设图短视频营销成功案例
  • 山西做网站的公司软件开发自学步骤
  • 企业网站开发公司-北京公司百度指数查询入口
  • wordpress 4.0 bug重庆seo整站优化方案范文
  • 广州学习网站建设深圳最新疫情最新消息
  • 重庆亮哥做网站网站seo优化有哪些方面
  • 杭州 seo网站建设 网络服务百度指数查询官网入口