第二彈!python爬蟲批量下載高清大圖
前言
在上一篇寫文章沒高質量配圖?python爬蟲繞過限制一鍵搜尋下載圖蟲創意圖片!中,我們在未登入的情況下實現了圖蟲創意無水印高清小圖的批量下載。雖然小圖能夠在一些移動端可能展示的還行,但是放到pc端展示圖片太小
效果真的是很一般!建議閱讀本文檢視上一篇文章,在具體實現不做太多介紹,只講個分析思路。
當然,本文可能技術要求不是特別高,但可以當作一個下圖工具使用。
環境:python3+pycharm+requests+re+BeatifulSoup+json
這個確實也屬實有一些勉強,不少童鞋私信問我有木有下載大圖的原始碼,我說可能會有,現在分享給大家。
當然對於一個圖片平臺來說,高質量圖片下載可能是其核心業務
,並且我看了以下,那些高質量大圖下載起來很貴!所以筆者並沒有嘗試付費下載然後檢視大圖的地址,因為這個可以猜想成功率很低,並且成本比較高,退而求其次,筆者採取以下幾種方法
。
對圖蟲平臺初步分析之後,得到以下觀點:
- 原版高質量無水印圖片下載太貴,由於沒付費下載沒有找到高質量圖的高清無水印原圖真實地址。沒有辦法(能力) 下載原版高清無水印。並且筆者也能猜測這個是一個網站的核心業務肯定也會層層設套。不會輕易獲得,所以並沒有對付費高清高質量無水印圖片窮追不捨。
- 但是高質量展示圖在預覽時候的是可以檢視帶有水印的高清圖的(帶著圖蟲創意水印)。
- 網站有一些免費的高清大圖圖片可以獲取到。雖然這個
不是精選圖
,但是質量也還可以!
下載免費高清大圖
在圖蟲創意有個板塊的圖片是免費開放的。在共享圖片專欄。的圖片可以搜尋下載。
https://stock.tuchong.com/topic?topicId=37 圖蟲創意url地址
找到一張圖片點進去,檢查地址你可以直接訪問得到。而有相關因素的就是一個圖片伺服器域名
+圖片id
組成的圖片url地址。也就是我們要批量找到這些圖片的id。
在搜尋介面檢視原始碼,發現這個和前面的分析如出一轍,它的圖片id藏在js裡面。我們只需通過正則解析。拿到id然後拼湊url即可完成所有圖片地址,這個解析方式和上文基本完全一致,只不過是瀏覽器的URL和js的位置有相對的變化只需小量修改,然後直接爬蟲下載儲存即可!而這個搜尋html的url就是https://stock.tuchong.com/free/search/?term=
+搜尋內容
。這個下載內容的實現在上一篇已經分析過。請自行檢視或看下文程式碼!這樣
下載帶水印的精選圖
好的圖片都在優選圖片專欄。然而這部分圖片我們可以免費獲取帶水印的圖片。
在登入賬號之後點開的圖片預覽,當你點開預覽的時候是可以看得到圖片的。每張圖片對應一個唯一ID,這個地址可以獲得但是比較麻煩。我們嘗試能不能獲得一個簡單通用的url
地址呢?
經過嘗試發現這個圖片的url可以在我們上面的免費高清大圖url地址共用
!也就是我們可以得到這個ID通過上個url來批量獲取下載圖片!下載圖片的方法一致不需要重複造輪子。而id的獲取方法我們在下載高清小圖就已經詳細介紹過了也是一樣的。那麼分析就已經成功了,程式碼將在後面給出,這樣我們可以下載帶水印的高清大圖了!
##js的解析規則:
#----
js=soup.select('script') js=js[3]
pattern = re.compile(r'window.hits = (\[)(.*)(\])')
va = pattern.search(str(js)).group(2)#解析js內容
#-------
當然,就配圖而言還是高質量圖的質量高很多,如果可以接受的話可以使用。唯一缺點就是圖創水印。
程式碼與總結
import requests
from urllib import parse
from bs4 import BeautifulSoup
import re
import json
header = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',
'Cookie': 'wluuid=66; ',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
'Accept-encoding': 'gzip, deflate, br',
'Accept-language': 'zh-CN,zh;q=0.9',
'Cache-Control': 'max-age=0',
'connection': 'keep-alive'
, 'Host': 'stock.tuchong.com',
'Upgrade-Insecure-Requests': '1'
}
def mkdir(path):
import os# 引入模組
path = path.strip()# 去除首位空格
path = path.rstrip("\\") # 去除尾部 \ 符號
isExists = os.path.exists(path) # 判斷路徑是否存在 # 存在 True # 不存在 False
if not isExists: # 判斷結果
os.makedirs(path)# 如果不存在則建立目錄 # 建立目錄操作函式
return True#print (path + ' 建立成功')
else:
# 如果目錄存在則不建立,並提示目錄已存在
#print(path + ' 目錄已存在')
return False
def downloadimage(imageid,imgname):##下載大圖和帶水印的高質量大圖
url = 'https://weiliicimg9.pstatp.com/weili/l/'+str(imageid)+'.webp'
url2 = 'https://icweiliimg9.pstatp.com/weili/l/'+str(imageid)+'.webp'
b=False
r = requests.get(url)
print(r.status_code)
if(r.status_code!=200):
r=requests.get(url2)
with open(imgname+'.jpg', 'wb') as f:
f.write(r.content)
print(imgname+" 下載成功")
def getText(text,free):
texturl = parse.quote(text)
url="https://stock.tuchong.com/"+free+"search?term="+texturl+"&use=0"
print(url)
req=requests.get(url,headers=header)
soup=BeautifulSoup(req.text,'lxml')
js=soup.select('script')
path=''
if not free.__eq__(''):
js=js[1]
path='無水印/'
else:
js=js[3]
path='圖蟲創意/'
print(js)
pattern = re.compile(r'window.hits = (\[)(.*)(\])')
va = pattern.search(str(js)).group(2)#解析js內容
print(va)
va = va.replace('{', '{').replace('}', '},,')
print(va)
va = va.split(',,,')
print(va)
index = 1
for data in va:
try:
dict = json.loads(data)
print(dict)
imgname='img2/'+path+text+'/'+dict['title']+str(index)
index+=1
mkdir('img2/'+path+text)
imgid=dict['imageId']
downloadimage(imgid,imgname)
except Exception as e:
print(e)
if __name__ == '__main__':
num=input("高質量大圖帶水印輸入1,普通不帶水印輸入2:")
num=int(num)
free=''
if num==2:
free='free/'
text = input('輸入關鍵詞:')
getText(text,free)
這樣,整個流程就完成了,對於目錄方面,我也對圖蟲有水印的和沒水印的進行了區分,供大家使用。在使用方面,先輸入1或2(1代表有水印高質量圖,2代表共享圖),在輸入關鍵詞即可批量下載。
爬蟲專案github倉庫地址:https://github.com/javasmall/python 歡迎star!
最後,如果感覺可以的話歡迎點讚唄!歡迎關注筆者公眾號:bigsai
回覆爬蟲、python有精心準備資料一份!
IT圈不嫌多一個朋友,筆者也希望能成為你的朋友,共同學習,共同進步!
相關文章
- 爬蟲福利----妹子圖網MM批量下載爬蟲
- 爬蟲第二彈:千圖網電商淘寶模板圖片下載爬蟲
- 爬蟲福利二 之 妹子圖網MM批量下載爬蟲
- Java爬蟲批量爬取圖片Java爬蟲
- 爬蟲 Scrapy框架 爬取圖蟲圖片並下載爬蟲框架
- python 爬蟲 下載百度美女圖片Python爬蟲
- Java爬蟲之批量下載LibreStock圖片(可輸入關鍵詞查詢下載)Java爬蟲REST
- 使用Python爬蟲實現自動下載圖片Python爬蟲
- 如何用python爬蟲下載小說?Python爬蟲
- Python爬蟲——批次爬取douyin影片,下載到本地Python爬蟲
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- python使用非同步每秒鐘就能下載一張高清大圖,快不快?Python非同步
- python爬蟲系列(4.5-使用urllib模組方式下載圖片)Python爬蟲
- Python爬蟲批次下載電影連結Python爬蟲
- python 爬蟲之requests爬取頁面圖片的url,並將圖片下載到本地Python爬蟲
- 【python--爬蟲】千圖網高清背景圖片爬蟲Python爬蟲
- Python爬蟲和java爬蟲哪個效率高Python爬蟲Java
- 【python--爬蟲】彼岸圖網高清桌布爬蟲Python爬蟲
- 如何用Python爬蟲實現百度圖片自動下載?Python爬蟲
- 教你用python爬蟲爬blibili網站彈幕!Python爬蟲網站
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- Python爬蟲全網搜尋並下載音樂Python爬蟲
- 中小學教材下載爬蟲爬蟲
- Python爬蟲—爬取某網站圖片Python爬蟲網站
- 【爬蟲+情感判定+Top10高頻詞+詞雲圖】"王心凌"熱門彈幕python輿情分析爬蟲Python
- 【爬蟲+情感判定+Top10高頻詞+詞雲圖】“劉畊巨集“熱門彈幕python輿情分析爬蟲Python
- 【爬蟲+情感判定+Top10高頻詞+詞雲圖】“谷愛凌”熱門彈幕python輿情分析爬蟲Python
- Python爬蟲入門【5】:27270圖片爬取Python爬蟲
- Python 爬蟲 + 人臉檢測 —— 知乎高顏值圖片抓取Python爬蟲
- ReactPHP 爬蟲實戰:下載整個網站的圖片ReactPHP爬蟲網站
- 京東商品圖片 自動下載 抓取 c# 爬蟲C#爬蟲
- 堆糖網爬蟲(根據關鍵字下載圖片)爬蟲
- Python爬蟲入門【9】:圖蟲網多執行緒爬取Python爬蟲執行緒
- python就是爬蟲嗎-python就是爬蟲嗎Python爬蟲
- Python爬蟲學習線路圖丨Python爬蟲需要掌握哪些知識點Python爬蟲
- python 爬蟲Python爬蟲
- python爬蟲Python爬蟲
- Java爬蟲 爬取bing必應每日一圖背景圖下載到本地(HttpClient+Jsoup+Jackson)Java爬蟲HTTPclientJS