获取视频选集【每集】名字
0- 前言
声明: 仅供学习使用,侵删
常驻b站学习,一个视频几十集都是家常便饭
我的习惯用Word文档记笔记,因为Word的标题随便拖上拖下,改的时候比较方便。另外除非需要搭配代码的时候才用Typora
【下图是我的记笔记习惯,一般 笔记标题是 每集视频的名字】
偶然发现评论区 有位老哥把每集视频的标题发出来。一瞬间,我悟了!这不 每集视频的笔记标题这不就来了吗,干嘛还要手写!!!
但是,并不是每个视频都有这种好老哥,最终只能 靠自己动手了
1- 操作
1-1 使用requests
requests-思路
requests.get
获取的源码跟看到的并太一样,需要的数据是在script
里面的;看到是字典格式,本来想用 json
,奈何还是只菜鸡 失败了,最后只能用正则把数据挑出来了
现成热饭(代码)
功能:获取 - 并保存为 .txt 文件
import requests
import re
from bs4 import BeautifulSoup
global url_title
# 创建正则表达式对象,表示规则
findLink = re.compile(r'"part":"(.*?)","duratio')
# 获取网页数据,传入参数:网址
def find_data(_url):
get_url = requests.get(url=url) # 此处不添加请求头,也可以正常获取
# print(get_url.text) # 查看获取网页的源码--测试用
bs_html = BeautifulSoup(get_url.text, "html.parser") # 用html.parser解析器
global url_title
url_title_list = bs_html.get_text().title().split('\n', 1) # 分割标题,生成列表
url_title = url_title_list[0][:-30].lstrip() # 提取标题,作为文件名使用
print(url_title)
bs_find_data = bs_html.select('script') # 获取标签树
bs_data = ''
# 筛选列表数据
for __i in bs_find_data:
bs_data = str(__i)
if 'window.__INITIAL_STATE__={' in bs_data:
# print(bs_data) # 查看筛选的数据--测试用
break
# 正则查找,返回列表
re_list = re.findall(findLink, bs_data)
# print(re_list) # 查看返回的列表--测试用
return re_list
# 保存文件,传入参数:find_data() 返回的列表
def save(__video_list):
file_title = str(url_title) + ".txt" # 合成.txt格式 文件名
name_file = open(file_title, "w", encoding="utf-8") # 写入文件
for __i in video_list:
name_file.write(__i + "\n")
name_file.close()
if __name__ == '__main__':
url = '你的网址'
video_list = find_data(url)
# 遍历列表,查看每集名字
for i in video_list:
print(i)
save(video_list)
1-2 使用selenium
selenium-思路
selenium
比较简单,这里只要直接复制 Xpath 就行,我愿称你为最简单
补充:使用 selenium
需要提前配置好环境,没配置的可以去CSDN一下
# 这是复制下来 单集 的 Xpath
//*[@id="multi_page"]/div[2]/ul/li[2]/a/div/div[1]/span[2]
# 因为要获取 所有的,把 li[2] 的 2 换成 *
//*[@id="multi_page"]/div[2]/ul/li[*]/a/div/div[1]/span[2]
现成热饭(代码)
from selenium import webdriver
# 传入参数:网址
def fin_data(url):
wd = webdriver.Chrome()
wd.get(url)
wd.implicitly_wait(10) # 隐式等待10秒
name_list = wd.find_elements_by_xpath(
'//*[@id="multi_page"]/div[2]/ul/li[*]/a/div/div[1]/span[2]'
) # 获取每集的 标题名,返回列表
global url_title
url_title = wd.title[:-26] # 提取标题,作为文件名使用
return name_list
# 保存文件,传入参数:fin_data() 返回的列表
def save(video_list):
file_title = str(url_title) + ".txt" # 合成.txt格式 文件名
name_file = open(file_title, "w", encoding="utf-8") # 写入文件
for i in video_list:
name_file.write(i.text+"\n")
name_file.close()
if __name__ == '__main__':
url = "你的网址"
name_list = fin_data(url)
# 遍历列表
for i in name_list:
print(i.text)
# save(name_list)
2- 实战演示【request方式】
使用比较简单,把网址地址填进去,运行就行,正常几秒就出来了
# ----输出结果----
序章
环境搭建和课程介绍
用Python设计第一个游戏
变量和字符串(上)
变量和字符串(下)
是时候讲讲代码了
改进我们的小游戏(上)
改进我们的小游戏(下)
数字类型(上)
数字类型(下)
布尔类型
短路逻辑和运算符优先级
谋定而后动,知止而有得(上)
谋定而后动,知止而有得(下)
了不起的分支和循环(I)
了不起的分支和循环(II)
了不起的分支和循环(III)
了不起的分支和循环(IV)
了不起的分支和循环(V)
列表(I)
列表(II)
列表(III)
列表(IV)
列表(V)
列表(VI)
列表(VII)
元组
字符串(I)
字符串(II)
字符串(III)
字符串(IV)
字符串(V)
字符串(VI)
序列(上)
序列(中)
序列(下)
字典(上)
字典(中)
字典(下)
集合(上)
集合(下)
函数(I)
函数(II)
函数(III)
函数(IV)
闭包 -- 函数(V)
装饰器 -- 函数(VI)
lambda表达式 -- 函数(VII)
生成器 -- 函数(VIII)
进程已结束,退出代码0
3- 小结
整体比较简单,每个人学习方式不一样,合理使用工具,增加学习的快乐,哈哈哈
本文含有隐藏内容,请 开通VIP 后查看