静听网+python爬虫+多线程+多进程+构建IP代理池

摘要:
目标网站:Jingten。com网站网址:http://www.audio699.com/目标文件:用于在线收听的所有音频文件。附件:我喜欢听有声读物。然而,许多软件只能付费收听。尽管免费在线网站可以收听,但IP禁令非常严重。例如,收听在线音频网络。你不能不听就点击下一集,甚至快进。否则,你只能听5分钟,我妻子真的很讨厌它…所以我想用一个爬行器把它爬下来并存储在本地。我把我的一般分析步骤

目标网站:静听网

网站url:http://www.audio699.com/

目标文件:所有在线听的音频文件

附:我有个喜好就是听有声书,然而很多软件都是付费才能听,免费在线网站虽然能听,但是禁ip很严重,就拿静听网来说,你听一个在线音频,不能一个没听完就点击下一集,甚至不能快进太快,否则直接禁你5分钟才能再听,真的是太太讨厌了...

于是我就想用爬虫给它爬下来存储本地就nice了.

我把我的大概分析步骤分享出来.

步骤1:

我查看静听网网页url有一个规律,基网址是http://www.audio699.com/book/,每本书对于一个唯一标识,比如 《借种》 这本书的url如下:(唯一标识1276)

静听网+python爬虫+多线程+多进程+构建IP代理池第1张

步骤2:

分析html源码:我发现这个网站的每本书的每一集的url就是再上述url后添加集数,并且网页html中包含了音频文件的src如下:

静听网+python爬虫+多线程+多进程+构建IP代理池第2张

到这里我有点奇怪,这个网站封ip这么严,为什么src会直接放在静态网页中暴露如此明显,我尝试着随便复制一个src,使用python下载这个文件,嗯,瞬间就下载好了,我心想python还真不错,然而当我播放下载好的m4a文件时,发现只有5s,里面传来熟悉的声音"您访问过快,请5分钟后刷新网页重新访问",,,我心想果然没那么简单。。。

然后我重新打开网页获取刚才那个src发现src的值竟然变了,我经过测试发现这个src几乎时时刻刻都在变化,且毫无规律.

哼,想到这里我其实反倒松了口气,只要我用代码实时获取src并且开始下载应该就能解决这个问题吧,于是我测试了一下我的想法

果不其然,这样的确可以下载成功,但是这样一个一个下载速度太慢,一本有声书可是有好几百集音频文件,一集一集下不现实,于是我便用了多线程和多进程下载,

编写好python代码后,测试发现刚开始还行,但下了不到10个音频后出现错误,403 forbidden,503 service unaviable,意思是远程计算机拒绝我的计算机访问网页,文件传输服务不可用,就是这一系列的错误,就是禁了我的ip

我最开始本来想到要不要构建个ip代理池,我心想我的不同进程访问的网页url都不相同,应该没有什么大问题,哎,看来不能偷懒啊,于是我又到西刺高匿代理网站爬取了一些代理ip,我还专门写了一个筛选脚本,筛选能够成功获取目标网页html的ip,改写代码后,再次尝试,发现虽然没有再出现403等错误,但是下载成功率低的惊人,开30个线程,200个代理ip,等了半小时回来看,

tmd,才下好5,6个文件,很多文件只有十几k,看着贼烦,哎,看来这免费ip质量还是不行,存活时间太短,于是我只好到大象代理网站买了ip(一天9元好贵),然后经过

筛选再次爬取,这次一共爬200个音频,等了半个小时运行结束,发现大概下载成功了170个文件,其他文件要么直接0k,要么残缺不全,,,

为此我又写了一个脚本,专门用于下载文件夹中下载失败的文件,这次我采用多进程方式下载,写完后运行,等了一会,发现程序运行差不多了,但没运行结束,我直接结束运行,发现原来的30个残缺文件只有极少数几个还没下载成功,我筛选ip再运行脚本,这次很快就下好了,看来筛选出ip很重要,

接下来我又改进了脚本的一些地方,多线程,多进程个写了一个,配合着下载能够完全将几百集的音频文件全部下载

2019/6/4日追加:其实静听网src获取容易然而下载真的不容易,ip不够用,现在静听网ip封的更加严,也许站长发现有人大量爬取网站音频,新添了反扒手段,现在买的代理ip都不管用了,不想说了,都是伤心...

......................................三个月后..............................

2019/9/21日追加:目前已解决以上所有问题,亲测不需购买代理也能达到比较好的下载效果。博主写了一个命令行可执行文件(仅windows10可使用)

分享网盘链接:

1.19.9版本(第1版):链接:https://pan.baidu.com/s/1dpaS1GUNkH1PuUOXFMN2Dg
提取码:vrkx

2.19.11版本(第2版):链接https://pan.baidu.com/s/12AgpT-NoK3YrmWoBzfUZUg
提取码:cvci

第2版本新增功能:(1)支持零散集数批量下载功能;

                            (2)支持用户指定代理IP文件路径(可以避开筛选代理的步骤,直接进入第二步【step 2】下载有声书阶段);

....................................N个月后..................................

免责声明:文章转载自《静听网+python爬虫+多线程+多进程+构建IP代理池》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【转】linux kvm虚拟机配置及常见问题处理https 单向认证和双向认证配置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

屌炸天,Oracle 发布了一个全栈虚拟机 GraalVM,支持 Python!

前阵子,Oracle 发布了一个黑科技 “GraalVM”,号称是一个全新的通用全栈虚拟机,并具有高性能、跨语言交互等逆天特性,真有这么神奇? GraalVM 简介 GraalVM 是一个跨语言的通用虚拟机,不仅支持了 Java、Scala、Groovy、Kotlin 等基于 JVM 的语言,以及 C、C++ 等基于 LLVM 的语言,还支持其他像 Jav...

python数据处理中内存优化的一些tricks

1、读入数据时,pandas默认int类型为int64,未采用最省类型方式读取,可通过以下方式优化内存 1)数值型能用更低内存类型保存就转换为更低内存类型 2) 将object类型转换为category类型 category 类型在底层使用整型数值来表示该列的值,而不使用原值.Pandas用一个字典来构建这些整型数据到原数据的映射关系.当一列只包含有有限...

Python实现mysql数据库增删改查

利用python操作mysql数据库用法简单,环境配置容易,本文将实现对库增、删、改、查的简易封装! 1. 环境配置 安装第三方包,导入模块mysql.connector pip install mysql-connector 2.使用说明 本文将提供add,delete,update,query以及connect五种方法,下边将详述使用参数: 方法名...

windows10 Anaconda3安装教程

本文主要介绍在 windows 10 系统中安装 Anaconda3 的详细过程。 1. 官网下载安装包 官网下载Anaconda最新安装包: https://www.anaconda.com/distribution/ 根据自己的需要,选择适合自己电脑版本的安装包。我的电脑是win10 64位版本,所以下载下图所示的安装包。   官网下载页面...

Python多线程----线程池以及线程实现异步任务

Python多线程----线程池 需求:假设我们现在有一个多线程项目,每有一个用户连接进来,我们的服务器就会创建一个线程。而我们的服务器最多能够承载100个线程,再多就会崩溃。为了防止恶意用户伪装真实用户构建大量的访问来让我们的服务器崩溃,现在需要对线程数量进行限制,一共只有100个线程,并且当一个用户访问结束以后线程会自动归还,等待下一个用户访问。如果1...

python中的str()与eval函数

author:headsen chen date:2018-04-09 10:48:22 eval函数是把str转化成list、dict、tuple str函数把list,dict,tuple转为为字符串 ----------------------------------------------------------------# 字符串转换成列表a...