天天看點

[python學習] 簡單爬取圖檔網站圖庫中圖檔

        最近老師讓學習python與維基百科相關的知識,無聊之中用python簡單做了個爬取“遊訊網圖庫”中的圖檔,因為每次點選下一張感覺非常浪費時間又繁瑣。主要分享的是如何爬取html的知識和python如何下載下傳圖檔;希望對大家有所幫助,同時發現該網站的圖檔都挺精美的,建議閱讀原網下載下傳圖檔,支援遊訊網不要去破壞它。

        通過浏覽遊訊網發現它的圖庫url為,其中全部圖檔為0_0_1到0_0_75:

[python學習] 簡單爬取圖檔網站圖庫中圖檔

        同時通過下圖可以發現遊訊網的1-75頁個清單,每頁中有很多個主題,每個主題都有相應的多張圖檔。

[python學習] 簡單爬取圖檔網站圖庫中圖檔

        源代碼如下:

        (需在本地建立e:\\picture3檔案夾和python運作目錄建立yxdown檔案夾)

[python學習] 簡單爬取圖檔網站圖庫中圖檔
[python學習] 簡單爬取圖檔網站圖庫中圖檔

       由于代碼注釋中有詳細的步驟,下面隻是簡單介紹過程。

       1.簡單周遊網站,擷取每頁對應主題的url。其中每頁都有無數個主題,其中主題的格式如下:

        它是由無數個<div class="conbox"></div>組成,其中我們隻需要提取<a target="_blank" href="/html/5533.html" class="proimg">中的href即可,然後通過url拼接實作到具體的主題頁面。其中對應上面的布局如下圖所示:

[python學習] 簡單爬取圖檔網站圖庫中圖檔
[python學習] 簡單爬取圖檔網站圖庫中圖檔

        2.去到具體圖像頁面 下載下傳html頁面,如:

        同時下載下傳本地html頁面可以注釋該句代碼。此時需要點選“檢視圖檔”才能下載下傳原圖,點選右鍵隻能另存為網站html。

[python學習] 簡單爬取圖檔網站圖庫中圖檔

        3.我最初打算是是分析“檢視原圖”的url來實作下載下傳,其他網站同理是分析“下一頁”來實作的。但我發現它是通過javascript實作的浏覽,即:

        <a href="javascript:;" onclick="return false;" id="photooriginal">檢視原圖</a>

        同時它把所有圖檔都寫在下面代碼<script></script>中:

        其中擷取原圖-original即可,縮略圖-thumb,大圖-big,通過正規表達式下載下傳url:

        res_original = r'"original":"(.*?)"' #原圖

        m_original = re.findall(res_original,script)

        4.最後一步就是下載下傳圖檔,其中我不太會使用線程,隻是簡單添加了time.sleep(0.1) 函數。下載下傳圖檔可能會遇到維基百科那種通路受限,需要相應設定,核心代碼如下:

       同時我也在本地建立檔案夾picture3,并txt記錄擷取的url,如下圖所示:

[python學習] 簡單爬取圖檔網站圖庫中圖檔

        最後希望文章對大家有所幫助,簡單來說文章就兩句話:如何分析源代碼通過正規表達式提取指定url;如何通過python下載下傳圖檔。如果文章有不足之處,請海涵!