Python 爬蟲 目標:千圖網VIP高清無水印下載即用
Python pyquery 獲取千圖網部分VIP 無水印原圖
在工作時可能會需要很多的素材,千圖網為我們提供了一個很好的平臺,但多數圖片需要開通VIP,今天分享一個可以繞過多數 VIP 才能夠下載的方法
由於第一次寫部落格,會有語言不通或用詞不專業等情況,還望多加斧正。
所需庫: urllib.request pyquery urllib.parse
分析網頁原始碼
分析網頁原始碼
開啟千圖網中的一個素材圖片
右鍵開啟抓包工具,審查元素,
可以看到圖示中的素材url在 id = show-area-height 標籤下的img scr中
因此得到素材的 url: //preview.qiantucdn.com/58pic/35/76/35/auto_04f58PICt4IeBt75fhbbf_PIC2018.jpg!w1024_new_0
將得到的url複製到位址列中,看到高清的素材圖片展現在眼前。
但是發現並不是我們想要的高清、無水印、下載後免扣圖便可直接使用的圖片,因此產生一個問題,如何拿到素材真正的地址,而並非是網站用來向使用者展示的圖片?難道再去學一個PS?難道退而求其次只用這些殘次品嗎?
不,人向來追求美好,絕不能作罷。
接下來檢視網頁原始碼。
首先進入眼簾的是網頁的編碼格式為 " gbk ",在後續會用到。
其次,可以看到素材的 url 在 meta 中 content 也有出現。
這些有什麼用處我們暫且不談,先來根據 meta 中的content 中的url,再開啟另外的一些素材圖片:
//preview.qiantucdn.com/58pic/35/76/35/auto_04f58PICt4IeBt75fhbbf_PIC2018.jpg!w1024//preview.qiantucdn.com/58pic/35/76/35/auto_04f58PICt4IeBt75fhbbf_PIC2018.jpg!w1024_water
//preview.qiantucdn.com/58pic/35/74/79/auto_17658PIC9b2iMREdv697d_PIC2018.jpg!w1024_water
//preview.qiantucdn.com/58pic/35/74/86/png_auto_81X58PIC888fefc2s9GJK_PIC2018.jpg!w1024_water
//preview.qiantucdn.com/original_origin_pic/19/03/17/auto_709be0eaf77adfa23d73936042ac6290_PIC2018.jpg!w1024_water
在這些素材url中,我們可以觀察到前兩個 url 格式較為統一,而後兩者則各有不同。因為第一次寫部落格,所以這次之講述其中一種格式的下載方式。
有興趣的可以自己找一找後兩者的下載方式,當然也可以掃描文章末尾的二維碼獲取所有格式完整的程式碼。
接下來,繼續討論如何找到無水印的素材地址,以第一種格式為例:
//preview.qiantucdn.com/58pic/35/76/35/auto_04f58PICt4IeBt75fhbbf_PIC2018.jpg!w1024_water
//preview.qiantucdn.com/58pic/35/74/79/auto_17658PIC9b2iMREdv697d_PIC2018.jpg!w1024_water
觀察到這種格式的 url 均以//preview.qiantucdn.com/ 開頭,不一樣是後方的地址。
這時候我們是否想到可以將其後的內容理解為伺服器儲存該素材的一個編號。像是每位員工都有唯一工號。
但是隻有工號,沒有部門,豈不是很難管理?
千圖網的網址是什麼?
https://www.58pic.com/ 像不像一個部門?
俗話說,撐死膽大的,我們不如大膽的來猜想一下,部門,加工號,確定一個員工的工作地點。
所以,https://www.58pic.com/ + 58pic/35/74/79/auto_17658PIC9b2iMREdv697d_PIC2018.jpg!w1024_water
得到一個?沒錯,嶄新的url。
新生兒url:https://www.58pic.com/58pic/35/74/79/auto_17658PIC9b2iMREdv697d_PIC2018.jpg!w1024_water
滿懷激動的心情複製到位址列開啟。竟是 …… 404失聯
這是什麼原因呢?難道是大膽,窮有大膽?出生牛犢不怕虎嗎?
有沒有聽說過這樣一則笑話?
一位小學生寫到:我的媽媽是一位不到40歲的中年婦女?
“都中年婦女了,還40,40多餘的”
“哦,我的媽媽是一位不到40歲多餘的中年婦女”
聽完笑話了,繼續我們的探討。在這裡,就不賣關子了。第一次寫部落格還挺緊張的。直接奉上真正的下載地址,我們來觀察一下。
正宗url: http://apifont.58pic.com/index.php?c=Download&a=downPng&im=//58pic/35/76/35/04f58PICt4IeBt75fhbbf_PIC2018.png
開啟後,驚訝??? 直接下載?但是怎麼沒有自動命名呢?
不管了,我們先來下載看看是否是無水印的素材。
高清,無水印?可以直接使用?實現了?
沒錯的,這樣我們就拿到了真正的下載地址。
來分析一下這個 url:
http://apifont.58pic.com/index.php?c=Download&a=downPng&im=//58pic/35/76/35/04f58PICt4IeBt75fhbbf_PIC2018.png
再來對比我們拼湊的 url:
https://www.58pic.com/58pic/35/74/79/auto_17658PIC9b2iMREdv697d_PIC2018.jpg!w1024_water
我們發現,原來是我們部門錯了,部門應該是:http://apifont.58pic.com/index.php?c=Download&a=downPng&im=//
但是,這一部分是如何得到呢?還是那句話,第一次寫部落格,很緊張,掃描文章末二維碼,獲得詳細解釋資料。
再有不同就是 url 中的 auto_ 消失,以及 jpg!w1024_water 被 png 所取代。
所以我們得到真正的下載地址組合方式 http://apifont.58pic.com/index.php?c=Download&a=downPng&im=// + 編號 + .png
對於這個編號,還是上文中提到的工號。按照這個思路,我們來試一試下面的素材url:
//preview.qiantucdn.com/58pic/35/74/79/auto_17658PIC9b2iMREdv697d_PIC2018.jpg!w1024_water
取編號:58pic/35/74/79/auto_17658PIC9b2iMREdv697d_PIC2018
去除auto_:58pic/35/74/79/17658PIC9b2iMREdv697d_PIC2018
組合:又是一個新的url:(http://apifont.58pic.com/index.php?c=Download&a=downPng&im=//58pic/35/74/79/17658PIC9b2iMREdv697d_PIC2018.png)
先來試一試,複製貼上後
又是一個不自動命名的檔案,討厭。
先下載看一看
我們手動將其字尾改為圖片的格式 .png 或者 .jpg
兩個素材均無水印,可以直接使用。
按照此思路,我們用程式碼實現抓取,以及未自動命明的情況在程式碼中會實現。
利用 pyquery 篩選所需資訊
import urllib.request as ut
from urllib.parse import unquote,quote
from pyquery import PyQuery as pq
def get_imageurl(url = None):
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}
url = url
base_url = 'https://apifont.58pic.com/index.php?c=Download&a=downPng&im=/'
# 在分析中提到的部門,如有疑問,請到分析中回顧
req = ut.Request(url = url,headers = headers)
response = ut.urlopen(req).read().decode('gbk')
#分析中有提到網頁格式為 gbk 格式所以要解碼
data = pq(response)
#基本操作,不用多解釋吧?
image_url = data('meta').items()
# 獲取分析中的 content 中的 url
name = data('title').text()
# 同分析中的content中的意思,獲取 title 中的圖片名稱
url_1 = base_url_2 + j[23:39] + j[44:73] + ".png&title=" + quote(name)
'''
首先來解釋一下 &title + quote(name)
新增title的目的是實現自動命名,而命名的內容便是 name
而 name 為中文格式,可能會出錯,所以要轉為 url 編碼格式
'''
print(url_1)
#至此,實現找出真正的下載地址
if __name__ == '__main__': # 程式入口
url = 'https://www.58pic.com/newpic/35747917.html' #要下載的素材網址
get_imageurl(url) # 在函式中實現功能
在上文中提到,這只是其中的一種解析格式,還有另外的4、5 種解析格式。
在此篇部落格中只敘述了格式為:
//preview.qiantucdn.com/xxxxxx/auto_xxxxxxxx.jpg!w1024_water
的解析方法,其它格式的解析方法,請掃描下方二維碼獲取,或 等待後續部落格。
本講至此結束。感謝您的瀏覽。
相關文章
- 【python--爬蟲】千圖網高清背景圖片爬蟲Python爬蟲
- 【python--爬蟲】彼岸圖網高清桌布爬蟲Python爬蟲
- 第二彈!python爬蟲批量下載高清大圖Python爬蟲
- python愛奇藝VIP視訊爬蟲爬取下載Python爬蟲
- Python 實用爬蟲-04-使用 BeautifulSoup 去水印下載 CSDN 部落格圖片Python爬蟲
- Python爬蟲入門-爬取pexels高清圖片Python爬蟲
- Node JS爬蟲:爬取瀑布流網頁高清圖JS爬蟲網頁
- 網路爬蟲---從千圖網爬取圖片到本地爬蟲
- 爬蟲第二彈:千圖網電商淘寶模板圖片下載爬蟲
- python3網路爬蟲開發實戰【高清掃描帶目錄】Python爬蟲
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- Python爬蟲之煎蛋網圖片下載Python爬蟲
- Python爬蟲,高清美圖我全都要(彼岸桌面桌布)Python爬蟲
- Python資料爬蟲學習筆記(11)爬取千圖網圖片資料Python爬蟲筆記
- Python爬蟲入門教程 50-100 Python3爬蟲爬取VIP視訊-Python爬蟲6操作Python爬蟲
- Python爬蟲—爬取某網站圖片Python爬蟲網站
- Python3 大型網路爬蟲實戰 003 — scrapy 大型靜態圖片網站爬蟲專案實戰 — 實戰:爬取 169美女圖片網 高清圖片Python爬蟲網站
- python爬蟲中使用正則match( )方法匹配目標Python爬蟲
- Python爬蟲之網頁圖片Python爬蟲網頁
- 爬蟲 Scrapy框架 爬取圖蟲圖片並下載爬蟲框架
- 解決目標網站封爬蟲的3步方法網站爬蟲
- Python爬蟲入門【9】:圖蟲網多執行緒爬取Python爬蟲執行緒
- Python爬蟲 搜尋並下載圖片Python爬蟲
- python爬蟲實戰,爬蟲之路,永無止境Python爬蟲
- 教你用Python爬取圖蟲網Python
- 爬蟲福利----妹子圖網MM批量下載爬蟲
- 圖靈樣書爬蟲 - Python 爬蟲實戰圖靈爬蟲Python
- python爬蟲之圖片下載APP1.0Python爬蟲APP
- python 爬蟲 下載百度美女圖片Python爬蟲
- python網路爬蟲_Python爬蟲:30個小時搞定Python網路爬蟲視訊教程Python爬蟲
- Python爬蟲小專案:爬一個圖書網站Python爬蟲網站
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- node:爬蟲爬取網頁圖片爬蟲網頁
- GB標準文件爬蟲下載程式爬蟲
- 【Python爬蟲9】Python網路爬蟲例項實戰Python爬蟲
- 使用Python爬蟲實現自動下載圖片Python爬蟲
- 【python爬蟲】python爬蟲demoPython爬蟲
- python網路爬蟲應用_python網路爬蟲應用實戰Python爬蟲