1、前言
最近想搞了本地影音服务器,但没有片源,所有就想批量爬一个,分享一下,也加深下记忆。同时把已经爬好的500多部的链接一并分享给大家。视频我都下完了。 过程比较简单,但删了可惜了,就分享出来。完整代码与链接都放在文末,为了发扬分享的精神(反对伸手党),我给大家加了点难度,不过分吧
2、分析
这里下载的是经典分类的电影,所以打开该页面,是一个列表页,从中可以取得详情地址以及基本信息,如下图
000.jpg (130.02 KB, 下载次数: 0)
下载附件
1列表分析
2024-1-8 16:11 上传
拿到详情地址后,跳转到详情页,从详情页取下载链接,如下图
111.jpg (130.65 KB, 下载次数: 0)
下载附件
2详情分享
2024-1-8 16:11 上传
下面说说批量的思路,观察每页的列表页的链接,可以确定不同的列表页中的html链接是有一个索引递增的。所以循环就可以了
3、实现
比较简单,说说思路吧
1、首先根据要开始的页号与准备解析的页数,循环生成列表的url
2、根据列表url,代码通过浏览器打开url,取得html内容,从中取得影片基本信息以及详情url,以json格式保存
3、代码通过浏览器打开详情url,从详情url中读取下载链接,将下载链接添加到json里
4、导出json文件到本地
python通过selenium调用浏览器,安装命令
pip3 install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple
导出的json文件中,包含所有清晰度的链接。
通过代码打开浏览器访问html
def getHtmlContent(url) :
driver = webdriver.Chrome() # 使用谷歌浏览器
driver.get(url)
# 此时网页已经完全加载,包括由JavaScript动态插入的内容
html_source = driver.page_source
driver.close()
return html_source
生成urls.txt的文件名,若存在,则索引加1,如urls1.txt、urls2.txt
def getUrlFilePath(index=0) :
urlFileName = 'urls.txt'
if index > 0 :
urlFileName = 'urls'+str(index)+'.txt'
filePath = './url/'
# 若不存在,创建临时目录
if os.path.isdir(filePath) == False :
os.makedirs(filePath, exist_ok=True)
filePath = filePath + urlFileName
#若不存在,则直接返回
if os.path.exists(filePath) == False :
return filePath
else :
return getUrlFilePath(index + 1)
BeautifulSoup中的正则表达式的运用,搜索所有包含豆瓣评分的标签
soup = BeautifulSoup(html_content, 'html.parser')
jsonArr = []
scoreArr = soup.find_all(string=re.compile('豆瓣评分'))
4、注意事项
a、一次不要爬太多页,建议不要超过5页,多了时间太久,万一哪个卡死了,就完蛋了。
b、如果浏览器打开页面卡在白屏太久,可以先在浏览器打开该页面,再运行代码。
c、请使用谷歌浏览器
5、Demo以及说明
两个python文件,一个是解析取得json的,一个是从json中得到地址的。
先运行dytt.py导出json数据,再运行另一个。如下图
333.jpg (114.61 KB, 下载次数: 0)
下载附件
3代码说明
2024-1-8 16:11 上传
下载地址
dytt.zip
(84.46 KB, 下载次数: 152, 售价: 1 CB吾爱币)
2024-1-8 16:13 上传
点击文件名下载附件
某影天堂批量代码以及500多部地址
售价: 1 CB吾爱币 [记录]
下载积分: 吾爱币 -1 CB