每天資訊手把手帶你爬取小姐姐私房照,就不信你不喜歡~

菜單

手把手帶你爬取小姐姐私房照,就不信你不喜歡~

如何用Python搞到小姐姐私房照

本文純技術角度出發,教你如何用Python爬蟲獲取百度相簿海量照片——技術無罪。

學會獲取小姐姐私房照同理可得也能獲取其他的照片,技術原理是一致的。

目標站點

百度圖片使用關鍵字搜尋 小姐姐私房照

1。https://image。baidu。com/

開發環境

系統:Windows10 64位

Python版本:Python3。6。5(Python3以上版本即可)

IDE:Pycharm(非必須,其實你完全可以記事本寫程式碼)

第三方庫:requests、jsonpath

效果預覽

網頁私房照

程式碼爬取效果

正式教程

一、第三方庫安裝

在確保你正確安裝了Python直譯器之後,我們還需要安裝幾個第三方庫,命令如下**[在終端中安裝即可]**:

HTTP請求庫:

1。pip3 install requests

JSON資料解析庫:

2。pip3 install jsonpath

二、爬蟲的基本套路

不管是爬取哪類網站,在爬蟲中基本都遵循以下的基本套路:

請求資料 → 獲取響應內容 → 解析內容 → 儲存資料

當然,以上步驟是程式碼的編寫思路,實際操作中應該還要新增一個前置步驟,所以

完整流程

如下:

分析目標站點 → 請求網站獲取資料 → 解析內容 → 儲存資料

分析目標站點

快速的分析目標站點就很容易發現百度相簿的圖片資源是透過AJAX載入的,所以我們要請求的連結並非瀏覽器位址列連結,而是ajax載入的資料包的資源路徑,如圖:

那麼問題來了,如何獲取到這些資料包的地址?其實很簡單,如圖所示:

請求網站獲取資料

編寫程式碼請求資源,這裡有一點需要注意:請求頭必須攜帶,否則有可能請求失敗導致報錯。

import requests  # 導包

# 構建請求頭,把爬蟲程式偽裝成正常的瀏覽器使用者

headers = {

‘sec-fetch-dest’: ‘image’,

‘Host’: ‘image。baidu。com’,

‘User-Agent’: ‘Mozilla/5。0 (Windows NT 10。0; Win64; x64) AppleWebKit/537。36 (KHTML, like Gecko) Chrome/89。0。4389。82 Safari/537。36 Edg/89。0。774。50’,

}

# 資源包的url連結

url = ‘https://image。baidu。com/search/acjson?tn=resultjson_com&logid=10913526997707526921&ipn=rj&ct=201326592&is=&fp=result&queryWord=%E5%B0%8F%E5%A7%90%E5%A7%90%E7%A7%81%E6%88%BF%E7%85%A7&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=&hd=&latest=©right=&word=%E5%B0%8F%E5%A7%90%E5%A7%90%E7%A7%81%E6%88%BF%E7%85%A7&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&expermode=&force=&pn=210&rn=30&gsm=d2&1616553658252=’

# 構建請求

response = requests。get(url,headers=headers)

# 檢視狀態碼

print(response。status_code)

# 獲取原始資料

response。json()

解析資料

上述程式碼最終獲取到的資料是json資料,也就是我們Python中常說的字典,它長這樣:

既然它是一個字典,我們當然是可以使用Python中的鍵值索引方式獲取到想要的資料,但是此方法太笨,這裡介紹一種更加高明的方式,使用jsonpath解析資料

# 這一行程式碼便可以獲取到所有圖片的URL,返回的是一個列表,遍歷即可拿到每一個URL

imgs

=

jsonpath

jsonpath

json_data

‘$。。middleURL’

使用requests請求圖片URL,獲取圖片資料

image_data

=

requests

get

page_url

content

儲存資料

使用Python中的檔案物件,儲存圖片,圖片名字使用時間戳命名,避免圖片重名

with

open

‘imgs/’

+

datetime

now

strftime

“%Y%m%d%H%M%S%f”

+

‘。jpg’

‘wb’

as

f

f

write

image_data

寫在最後

到這整個兒爬蟲程式就寫完了。

當然,當前的這個只能爬取一個資源包中的資料,要爬取多個資源包或者說全部資源包的資料也是很簡單的,只需要分析分析資源包的URL變化規律就不難發現其中的某個關鍵字變化,靈活改變該關鍵字就可以不斷爬取。

然後我想把我收藏的一些程式設計乾貨貢獻給大家,回饋每一個讀者,希望能幫到你們。

乾貨主要有:

①Python電子書(主流和經典的書籍應該都有了)

②Python標準庫資料(最全中文版)

③專案原始碼(四五十個有趣且經典的練手專案及原始碼)

④Python基礎入門影片等等(適合小白學習)

私信“學習”就可以免費領取啦