目錄
- 前言
-
分析
- 理想狀態
- 爬蟲實現
- 其他注意
- 效果與總結
@(文章目錄)
前言
在我們寫
文章(博客、公眾號、自媒體)
的時候,常常覺得自己的文章
有些老土
,這很大程度是因為
配圖
沒有選好。
筆者也是遇到相同的情況,順便解決其中一個案例,給 大家一些技術上的參考和借鑒 !
并且,我們搜圖片如果去百度,會遇到兩種情況:
非高清
或者
帶水印
。這都是我們所忌諱的東西。筆者此次通過圖蟲創意抓起高清小圖,雖然不是大圖,
但是在火熱的移動端閱讀上是足夠的
!
分析
理想狀態
-
我們的理想狀態就是一個網頁,我們的目標網頁,把圖片
-
或者就是通過后臺ajax傳輸圖片地址引用。我們
不清楚
是否這樣!實際分析
但事實這種肯定會被理想破滅,因為不可能!他以圖片為核心業務
, 要你注冊,購買 等等,怎么可能就這么容易
的嵌入進入被你找到。 -
那它到底如何實現呢?我們分析一下!
首先打開網頁,檢查圖片,發現它的網頁圖片來源不唯一。有兩個主要域名
ice
和
wel
,并且后面的編號還不唯一,但是可以嘗試發現
相同域名不同后綴的圖片地址結果相同
?。ɡ?
icweiliimg9
和
icweiliimg/
效果相同)。
我們發現原來這個搜索url會變化,但是這個查看網頁源代碼發現并沒有我們想要的圖片地址。那么我們肯定知道它
要么從ajax渲染
,或者就
藏在js中進行混淆或者加密
。我們發現這個xhr中并沒有想要的數據,并且他其實藏在js中。
其實這個可以猜想到的
,因為它的
url既然跟著變化那么返回的數據肯定是有區別
的。
那么分析就到這里,剩下就是python爬蟲的模擬和解析了。
爬蟲實現
前面說到已經知道它的數據源,我們用python編寫爬蟲需要進行模擬。經過測試發現它需要進行一些驗證,其中包過
cookie
的
wluuid
字段(只驗證存在,不驗證正確性)。
那么我們編寫一段代碼就能拿到網頁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
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
