寫博客沒高質量配圖?python爬蟲教你繞過限制一鍵搜索下載圖蟲創意圖片!

@(文章目錄)python

前言

在這裏插入圖片描述
在咱們寫文章(博客、公衆號、自媒體)的時候,經常以爲本身的文章有些老土,這很大程度是由於配圖沒有選好。ajax

筆者也是遇到相同的狀況,順便解決其中一個案例,給你們一些技術上的參考和借鑑算法

而且,咱們搜圖片若是去百度,會遇到兩種狀況:非高清或者帶水印。這都是咱們所忌諱的東西。筆者這次經過圖蟲創意抓起高清小圖,雖然不是大圖,可是在火熱的移動端閱讀上是足夠的json

分析

在這裏插入圖片描述
廢話說完了,咱們開始分析怎麼樣才能獲取這樣的圖片呢。cookie

理想狀態

  • 咱們的理想狀態就是一個網頁,咱們的目標網頁,把圖片<img src="xxxxxx">直接放到html中。咱們的爬蟲能夠直接解析。這種狀況,就像你寫的博客,我的網站的圖片同樣,簡單嵌入
    在這裏插入圖片描述
  • 或者就是經過後臺ajax傳輸圖片地址引用。咱們不清楚是否這樣!數據結構

    實際分析

    但事實這種確定會被理想破滅,由於不可能!他以圖片爲核心業務要你註冊,購買等等,怎麼可能就這麼容易的嵌入進入被你找到。
  • 那它到底如何實現呢?咱們分析一下!python爬蟲

首先打開網頁,檢查圖片,發現它的網頁圖片來源不惟一。有兩個主要域名icewel,而且後面的編號還不惟一,可是能夠嘗試發現相同域名不一樣後綴的圖片地址結果相同!(例如icweiliimg9icweiliimg/效果相同)。
在這裏插入圖片描述
咱們發現原來這個搜索url會變化,可是這個查看網頁源代碼發現並無咱們想要的圖片地址。那麼咱們確定知道它要麼從ajax渲染,或者就藏在js中進行混淆或者加密。咱們發現這個xhr中並無想要的數據,而且他其實藏在js中。其實這個能夠猜測到的,由於它的url既然跟着變化那麼返回的數據確定是有區別的。學習

那麼分析就到這裏,剩下就是python爬蟲的模擬和解析了。測試

爬蟲實現

前面說到已經知道它的數據源,咱們用python編寫爬蟲須要進行模擬。通過測試發現它須要進行一些驗證,其中包過cookiewluuid字段(只驗證存在,不驗證正確性)。

那麼咱們編寫一段代碼就能拿到網頁html。可是問題來了。數據藏在js裏面啊!!!

咱們只能用正則進行套了!
對於這個js,咱們經過js=soup.select('script') js=js[4]便可獲取。
在這裏插入圖片描述
對於有用數據,只能正則截取。

pattern = re.compile(r'window.hits = (\[)(.*)(\])')
 va = pattern.search(str(js)).group(2)#解析js內容

可是這個相似json的串用,拼接咱們沒法直接使用spilt分組分開,可是咱們能夠從}所有替換成},,那麼就三個,,,咱們就能夠分割而不影響其餘json串內,;split以後每組都知足json串格式直接轉成json取值便可!
在這裏插入圖片描述
那麼剩下拿到url直接構造url而後下載圖片便可!

其餘注意

圖片下載:

  • 下載圖片有不少圖片無名稱或者名字相同,避免這個不下載要進行編號
  • 兩個url域名須要嘗試下載其中一個成功即完成下載!

爬蟲方面

  • 全程不須要登陸,下載爲高清小圖。後續能夠考慮研究登陸後的大圖分享給你們!

其餘

  • 創建圖片路徑要考慮路徑是否存在!

效果與總結

經過上述分析:編寫爬蟲:
在這裏插入圖片描述
在這裏插入圖片描述

測試結果:
在這裏插入圖片描述

打開文件夾:
在這裏插入圖片描述
發現nice!你只須要輸入關鍵詞便可實現自動下載,雖然是小圖,可是效果不錯!
移動端公衆號和csdn效果!
在這裏插入圖片描述

不難發現整個過程就是分析和處理字符串的邏輯難點。數據結構與算法紮實了處理問題都不難,!因此,若是要學習數據結構與算法,爬蟲請關注我吧!公衆號:bigsai

相關文章
相關標籤/搜索