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


@

前言

在這里插入圖片描述
在我們寫文章(博客、公眾號、自媒體)的時候,常常覺得自己的文章有些老土,這很大程度是因為配圖沒有選好。

筆者也是遇到相同的情況,順便解決其中一個案例,給大家一些技術上的參考和借鑒

並且,我們搜圖片如果去百度,會遇到兩種情況:非高清或者帶水印。這都是我們所忌諱的東西。筆者此次通過圖蟲創意抓起高清小圖,雖然不是大圖,但是在火熱的移動端閱讀上是足夠的

分析

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

理想狀態

  • 我們的理想狀態就是一個網頁,我們的目標網頁,把圖片<img src="xxxxxx">直接放到html中。我們的爬蟲可以直接解析。這種情況,就像你寫的博客,個人網站的圖片一樣,簡單嵌入
    在這里插入圖片描述
  • 或者就是通過后台ajax傳輸圖片地址引用。我們不清楚是否這樣!

實際分析

但事實這種肯定會被理想破滅,因為不可能!他以圖片為核心業務要你注冊,購買等等,怎么可能就這么容易的嵌入進入被你找到。

  • 那它到底如何實現呢?我們分析一下!

首先打開網頁,檢查圖片,發現它的網頁圖片來源不唯一。有兩個主要域名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


免責聲明!

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



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