第二彈!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內容 #-------
1
2
3
4
5
6
當然,就配圖而言還是高質量圖的質量高很多,如果可以接受的話可以使用。唯一缺點就是圖創水印。
代碼與總結
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
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
Python
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。