本文目錄一覽:
圖片自動下載神器!一鍵獲取全網圖片
大家好,我是九劍。
經常玩電腦的兄弟們應該知道Python,易語言這種神奇的東西,可以在線爬取網上的一些數據,甚是好用。
然而Python畢竟是一種編程語音,想要短時間內去學習並掌握並不是一件容易的事情,更別提實操爬取數據了。
其實從需求上來說,普通用戶無非就是 爬取一些圖片文字 等等用來欣賞自用數據,比如一些小姐姐圖片。
所以這次,九劍為大家帶來一個神器,你只需要輸入相關關鍵詞,工具就會為你 搜集全網圖片,並且無需打開鏈接,可以直接批量保存 !
關鍵詞4K圖下載器(Windows)
無廣告,免登錄,且免費
打開工具後你就會發現該工具的良心之處了,整體界面為一個小窗口, 沒有任何廣告彈窗,也沒有任何註冊登錄 的選項!
所有功能一目了然,包括什麼 搜索圖片、保存圖片、關鍵詞輸入、設置保存路徑 等等,小小白看了都能直接上手操作!
別看它小,功能確是異常強大,某種意義上來說,這TM就是可視化編程,沒錯,這就是年輕人的第一個程序。
全網搜索,光速保存
首先設置好路徑,然後直接 輸入關鍵詞,點擊搜素圖片,工具就會為你進行在線搜索超高清圖片 ,基本都是 1080P 以上!
這裡我們來嘗試一下 輸入關鍵詞:動漫美女 ,搜索後可以發現沒有任何延遲,工具直接將搜索結果展示了出來!
由於該工具會直接搜全網圖片,所以搜索期間我們也可以點擊 停止採集圖片 ,然後直接點擊開始 保存圖片 ,工具就會批量將圖片保存到相關路徑!
基本上保存圖片都是非常的快,保存好後這裡直接去相關路徑隨便打開一張下載的圖片進行查看,畫質都非常的清晰,屬於那種直接可以當桌面屏保的圖片!
1.點贊並點擊我頭像關注
2.關注後私信我回復:28
python3 爬取圖片異常的原因?
我們在下載文件時,一會會採取urlretrieve或是requests的get方式,
from urllib.request import urlretrieve
urlretrieve(self.url, filename=”xxx.png”)
但對於連續下載,各個文件保存是需要時間的,而程序運行永運是快於存儲的,我懷疑這是水管里流水速度與缸的大小不合適的原因,那可以試試下面這種方式:
r = requests.get(url, stream=True)
with open(local_filename, ‘wb’) as f:
for chunk in r.iter_content(chunk_size=1024):
if chunk: # filter out keep-alive new chunks
f.write(chunk)
f.flush()
python爬取圖片時忽略了一些圖片
真實圖片地址是在客戶端javascript代碼中計算出來的.
你需要尋找
span class=”img-hash”Ly93dzMuc2luYWltZy5jbi9tdzYwMC8wMDczdExQR2d5MWZ3Z3h6ajlrMGtqMzBpYjBramtnaS5qcGc=/span
這樣的內容,取出
Ly93dzMuc2luYWltZy5jbi9tdzYwMC8wMDczdExQR2d5MWZ3Z3h6ajlrMGtqMzBpYjBramtnaS5qcGc=
這段內容,做base64解碼即得圖片地址。
相應的腳本在
//cdn.jandan.net/static/min/91798e4c623fa60181a31d543488217eB2GDr79r.03100001.js
這段內容你通過get_page()爬到地頁面中有,同樣,該頁面中有這樣的html(為便於閱讀已重排格式):
div class=”text”
span class=”righttext”
a href=”//jandan.net/ooxx/page-34#comment-4001800″4001800/a
/span
p
img src=”//img.jandan.net/img/blank.gif” onload=”jandan_load_img(this)” /
span class=”img-hash”Ly93dzMuc2luYWltZy5jbi9tdzYwMC8wMDczdExQR2d5MWZ3Z3h6ajlrMGtqMzBpYjBramtnaS5qcGc=/span
/p
/div
這個img的onload調用的函數就在前面給出的那個js文件中:
function jandan_load_img(b){
var d=$(b);
var f=d.next(“span.img-hash”);
var e=f.text();
f.remove();
var c=jdDw3Ldvi4NcbKboi4X19hCAmdC3Q3aZvN(e,”DGmLfT4H73yJdXXpXs3pw7uAiICcflZS”);
var a=$(‘a href=”‘+c.replace(/(\/\/\w+\.sinaimg\.cn\/)(\w+)(\/.+\.(gif|jpg|jpeg))/,”$1large$3″)+
‘” target=”_blank” class=”view_img_link”[查看原圖]/a’);
d.before(a);
d.before(“br”);
d.removeAttr(“onload”);
d.attr(“src”,location.protocol+c.replace(/(\/\/\w+\.sinaimg\.cn\/)(\w+)(\/.+\.gif)/,”$1thumb180$3″));
if(/\.gif$/.test(c)){
d.attr(“org_src”,location.protocol+c);
b.onload=function(){
add_img_loading_mask(this,load_sina_gif)
}
}
它調用了jdDw3Ldvi4NcbKboi4X19hCAmdC3Q3aZvN對img-hash的內容做解碼,這個函數同樣在這個js文件中:
var jdDw3Ldvi4NcbKboi4X19hCAmdC3Q3aZvN=function(o,y,g){
var d=o;var l=”DECODE”;
var y=y?y:””;
var g=g?g:0;
var h=4;
y=md5(y);
var x=md5(y.substr(0,16));
var v=md5(y.substr(16,16));
…中間部分略去…
if(l==”DECODE”){
m=base64_encode(m);
var c=new RegExp(“=”,”g”);
m=m.replace(c,””);
m=u+m;
m=base64_decode(d)
}
return m
};
你只需要在Python使用相應的庫對抓取到的img-hash內容做解碼即可得到圖片地址。
你使用了str的find來從文本中定位位置,這樣做太麻煩了,太多的代碼細節,使用re模塊做正則匹配就簡單很多,更快的是直接使用現有的爬蟲庫.
使用re進行正則匹配,只需要使用正則式’span class=”img-hash”(.+?)’即可提取出該頁面中所有加密的圖片地址。
import re
import base64
pat = re.compile(‘span class=”img-hash”(.+?)’)
…
def get_imgurls(url):
urls = []
for imgurl in pat.findall(url_open(url).decode(‘utf-8’)):
.append(str(base64.b64decode(imgurl), ‘utf-8’))
return urls
然後就可以對get_imgurls返回的列表遍歷,逐個交給save_img處理了。
使用爬取庫也只需要尋找span,從中找出class=’img-hash’即可讀取text。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/236442.html