天天看點

python3爬取1024圖檔

這兩年python特别火,火到部落格園現在也是隔三差五的出現一些python的文章。各種開源軟體、各種爬蟲算法紛紛開路,作為網際網路行業的IT狗自然看的我也是心癢癢,于是趁着這個霧霾橫行的周末瞅了兩眼,作為一名老司機覺得還是應該以練帶學,1024在程式員界這麼流行的網站,當然拿來先練一練。

python自稱是以自然語言的視角來程式設計,特點是開發快,語言簡潔,沒那麼多技巧,大名鼎鼎的豆瓣、youtube都是使用python開發的網站,看來python在大規模使用這個方面來講應該沒有啥子問題;python也不是沒有缺點在性能方面就Java、C++等老前輩還是沒得比的,另外python和nodejs一樣隻能使用CPU單核,也是性能方面影響是因素之一。但python在特定領域表現突出,特别是腳本、爬蟲、科學算法等。

好了,還是說正事如何爬取1024網站的圖檔

首先進入1024的導航網站,随便點選一個位址進入選擇圖檔區或者在網站位址後面添加<code>thread0806.php?fid=16&amp;search=&amp;page=</code>,這就是1024網站的圖檔區,這個爬蟲就是主要抓取這個區域的所有圖檔,使用浏覽器debug分析一下這個頁面發現基本都是清單頁,格式如下:

python3爬取1024圖檔

在位址欄<code>http://xxxxxx.biz/thread0806.php?fid=16&amp;search=&amp;page=</code>後面拼1、2、3等于就是通路圖檔區第一頁、第二頁、第三頁的清單頁。根據這些清單頁就可以爬出具體的每一個圖檔頁的位址,類似上圖的位址:<code>htm_data/16/1611/2114702.html</code> 在位址的前面拼接上主站位址就是具體的圖檔頁了。是以根據以上的分析:通過循環位址欄找到不同的清單頁在根據清單頁找到具體的圖檔頁

位址欄-&gt;圖檔清單-&gt;圖檔頁位址

擷取清單頁圖檔位址代碼如下:

在這個位址後面拼接1到N就是不同的清單頁

利用浏覽器debug一下頁面,圖檔基本上都是外鍊位址,以http或者https開頭以jpg、png、gif結尾,寫個正規表達式比對這些位址,然後交給程式下載下傳就OK了。

頁面代碼如下:

python3爬取1024圖檔

在下載下傳過程中遇到了幾個問題,就是有的頁面會報403禁止通路等,應該是網站加了一些防止爬蟲的手段,網上找了下加上header參數來模拟浏覽器通路就解決了;

下載下傳單個頁面代碼如下:

批量爬取有兩個工作要做,第一for循環目标内的所有清單頁,第二為了避免重複爬取,需要給每個頁面建立唯一的檔案夾,下次爬取的時候如果存在直接跳過。最後在理一下所有的爬取步驟:

循環位址欄-&gt;找出圖檔頁清單-&gt;圖檔頁分析找出圖檔位址-&gt;為圖檔頁建立唯一的檔案夾-&gt;開始下載下傳頁面圖檔

完整的代碼如下:

最後的爬取結果:

python3爬取1024圖檔
具體位址和源代碼在一起

關于python2和python3的争論,網站争論比較大python3不相容pyhton2,很多第三方的類庫暫時還沒有支援python3等等,但是對于我們新手來說,肯定是往前看果斷python3.

代碼比較備援幾個地方還沒有寫好,還在慢慢學習中,目前隻是搞的可以跑起來。還有幾個問題沒有解決,下載下傳一段時間後會莫名其妙的斷掉目前還麼找到原因,後期看是否可以加上多線程來爬取可能會快一點,大家有什麼更好的建議也可以提出來。

<a href="http://blog.csdn.net/fly_yr/article/details/51525945">爬取豆瓣首頁圖檔</a>

<a href="http://zzydev.com/python/2016/05/20/Python1024">使用Python爬取1024上的圖檔</a>

作者:純潔的微笑

版權所有,歡迎保留原文連結進行轉載:)

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。 

本文如對您有幫助,還請多幫 【推薦】 下此文。 

如果喜歡我的文章,請關注我的公衆号

本文轉自純潔的微笑部落格部落格園部落格,原文連結:http://www.cnblogs.com/ityouknow/p/6013074.html,如需轉載請自行聯系原作者