天天看點

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

目标網站:靜聽網

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

目标檔案:所有線上聽的音頻檔案

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

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

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

步驟1:

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

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

步驟2:

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

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

到這裡我有點奇怪,這個網站封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很重要,

接下來我又改進了腳本的一些地方,多線程,多程序個寫了一個,配合着下載下傳能夠完全将幾百集的音頻檔案全部下載下傳下來.

由于腳本有點長,就不在這裡貼了,我有時間會上傳到CSDN,或者可以加群[email protected]群主索要,加我qq2407327377也可,亦或給我留言我發你郵箱.

另外我為了晚上聽書不用手動點選下一集,還專門瞎寫了一個音視訊播放器,可以實作自動播放,定時關閉,定集關閉,預約集數播放,預約時間播放等各種小功能.

需要的話可加群@群主索要

(附錄:購買的ip你可以一次性存儲多一點,我存儲了4000來個ip,發現經過篩選,可以成功下載下傳不同的書的音頻)

後記:哎,一切都是為了免費,為了能夠簡化操作,為了能夠更享受,而這也不就正是我們繼續前進的動力嘛.

原文:https://www.cnblogs.com/lyj-blogs/p/10855898.html