ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

「Videos」- 爬取电影天堂 @20210218

2021-02-18 12:04:06  阅读:354  来源: 互联网

标签:20210218 links Videos -- 爬虫 我们 爬取 链接 下载


问题描述

我们有 4T 磁盘,我们不想让它成为闲置资源,何必让他空闲呢,我们想要把它装满,我们应该用什么装满呢?我们可以用视频资源把它填满。所以,我们需要电影网站的爬虫,以到各大电影网站获取下载链接,并完成电影下载(所谓囤货,虽然我们不一定会看;此外,家中宽带也不会闲置)。

但是,我们不想写爬虫(编码),所谓爬虫写得好,桔子进的早。另外,爬虫需要调试,需要针对不同的页面编写不同的提取代码。(当然,如果需要学习使用 Python 爬虫,可以考虑通过这种方法来完成任务)

此外,爬取下载链接并不是最困难的部分,真正困难的地方是电影下载。因为视频资源的有无、视频资源的数量等等因素,都会影响到我们的下载,决定我们的下载是否成功。比如,电影天堂的 FTP ( ftp://d062.dygod.com ) 从来都是无法直接访问,但是迅雷可以下载(可能是迅雷服务器的下载缓存吧)

所以,最后我们决定,仅仅爬取电影的下载链接,而下载任务交由迅雷来处理。(当然,这里面会有一些失效的链接、无法下载的链接,但是这么多资源的链接,谁还在乎有几千个失效的链接呢?)

该笔记将记录:汇总爬取电影天堂电影下载链接的方法,以及相关问题处理。

解决方案

我们能想到的方法大致有以下几种:

方案一、使用 Python 爬虫

这是我们最先想到的方案,也是作为后端开发首先能想到的方法。但是,我们没有使用该方案(正如文章开始着的那样),主要原因就是不想编码,编码还要调试,挺麻烦的。(当然,有人喜欢通过编码的方式来解决这个问题,或者学习 Python 爬虫,可以考虑通过这种方式来解决问题。网上有很多类似的资料,这里我们就不再赘述)

方案二、HTTrack + Grep

我们使用 HTTrack 镜像站点,然后使用 grep 命令过滤出全部下载链接(ftp、magnet)

# 01/10/2021 我们放弃该方案:因为我们并不想学习 httrack 的用法,毕竟镜像站点的需求比较少;并且已经很久没有更新;(总之,针对该问题,我们可以找到各种不使用 httrack 的理由)

方案三、Wget + Grep

我们使用 Wget 镜像站点,然后使用 Grep 过滤出全部下载链接(ftp、magnet)。该方法与 HTTrack + Grep 方案相同,只是改为使用 Wget 这个我们经常使用的工具。(此外,我们还可以得到电影天堂的镜像站点,算是意外收获)

# 01/10/2021 这是我们最终采用的方案,另辟蹊径,简单可操作。当然该方案也有局限性,比如:在爬取的过程中不能动态更换 User Agent 请求头;无法进行数据的解析处理;等等。

方案三、Wget + Grep

第一步、爬取整个站点的全部页面:

#!/bin/sh

round=0
while true
do
	round=$(expr $round + 1)
    echo "$round" > ./round.log
    wget --wait=3 --random-wait \
         -U "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36" \
         --recursive \
         --no-clobber   \
         --page-requisites \
         --span-hosts \
         --convert-links \
         --domains "www.dytt8.net" \
         --no-parent \
         https://www.dytt8.net
done

# ./round.log:由于 wget 失败会退出,因此这里记录重试次数
# --no-clobber:如果文件已经下载,则不会再进行下载
# --wait=5 --random-wait:随机等待 3*0.5 ~ 3* 1.5 秒(在每次请求间)

第二步、提取所有页面的下载链接:

find ./ -type f -name '*.html' -print0 \
    | xargs -0 -i sh -c "iconv -c -f gb2312 -t UTF-8//IGNORE '{}'" \
    | grep -E 'magnet:[^"<]+|ftp://[^"<]+|thunder://[^"<]+' --only-matching \
    > links.txt
cat links.txt | sort | uniq > links-uniq.txt
grep -E '.mp4$' links-uniq.txt > links-uniq-mp4.txt # 我们只需要 mp4 电影

第三步、我们去睡觉,剩下的事情就交给 Wget、Grep、迅雷来做来做。

# 02/14/2021 到目前为止,我们爬取到 39875 links.sort.uniq.txt 个链接,但是我们不确定这是否之整个全部链接。假如一部影片时长一小时,即使我们不眠不休的看,也要看 4.5 年。此外,不要将全部下载链接放入迅雷中进行下载,否则迅雷客户端响应会很慢。

相关链接

https://www.dytt8.net

相关文章

「VLC」- 使用 ROOT 用户运行
「开源视频管理系统」- 搭建属于自己的视频站点

参考文献

Download an entire website with wget, along with assets.
https://gist.github.com/mikecrittenden/fe02c59fed1aeebd0a9697cf7e9f5c0c%20
cmd - how to resume wget mirroring website? - Stack Overflow


标签:20210218,links,Videos,--,爬虫,我们,爬取,链接,下载
来源: https://www.cnblogs.com/k4nz/p/14411240.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有