靜聽網+python爬蟲+多線程+多進程+構建IP代理池


目標網站:靜聽網

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

目標文件:所有在線聽的音頻文件

附:我有個喜好就是聽有聲書,然而很多軟件都是付費才能聽,免費在線網站雖然能聽,但是禁ip很嚴重,就拿靜聽網來說,你聽一個在線音頻,不能一個沒聽完就點擊下一集,甚至不能快進太快,否則直接禁你5分鍾才能再聽,真的是太太討厭了...

於是我就想用爬蟲給它爬下來存儲本地就nice了.

我把我的大概分析步驟分享出來.

步驟1:

我查看靜聽網網頁url有一個規律,基網址是http://www.audio699.com/book/,每本書對於一個唯一標識,比如 《借種》 這本書的url如下:(唯一標識1276)

步驟2:

分析html源碼:我發現這個網站的每本書的每一集的url就是再上述url后添加集數,並且網頁html中包含了音頻文件的src如下:

到這里我有點奇怪,這個網站封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個月后..................................

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM