如何用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基礎入門影片等等(適合小白學習)
私信“學習”就可以免費領取啦