案例:pchome24h 商品爬蟲 - 搜索功能
撰寫時的直播影片
網站的傳輸結構
如何請求
Chrome DevTools Network

分析邏輯
參考第一個請求

原始網址: https://ecshweb.pchome.com.tw/search/v3.3/?q=%E8%97%8D%E8%8A%BD%E9%9F%B3%E9%9F%BF 拆解成 https://域名/功能/版本/傳輸的數值 GET是用 【?】 做為傳輸的開頭 該網址可以看做是 向 ecshweb.pchome.com.tw/search/v3.3 搜索 %E8%97%8D%E8%8A%BD%E9%9F%B3%E9%9F%BF 並且 %E8%97%8D%E8%8A%BD%E9%9F%B3%E9%9F%BF (這段經過了 encodeURI加密) = 藍芽音響
回應的內容
並不包含任何商品訊息,所以第一個請求不是關鍵的請求

往下找 有回應商品訊息的請求
先在 網頁上 找到隨意一個商品的連結

得到網址為:https://24h.pchome.com.tw/prod/DPAH3C-A9009C1DY
一般我們直接找結尾的幾個像型號一樣的英數(建議不要中文) 以A9009C1DY 為例
然後在 network標簽按ctrl+f搜尋

會得到已經過濾過 請求內容包含該型號的,網址名稱results應該就是我們要的目標
https://ecshweb.pchome.com.tw/search/v3.3/all/results?q=%E8%97%8D%E8%8A%BD%E9%9F%B3%E9%9F%BF&page=1&sort=sale/dc

Result回應的內容為
一串json,因為內容太多貼不上,所以先以圖為準,實際上結構化之後就是如 Preview相同

結論上來說
https://ecshweb.pchome.com.tw/search/v3.3/all/results
是我們的目標網址
構建程式碼
目標網址的請求格為下圖

欄位說明
Genneral = 概要
Response Headers = 網站回應的Headers頭部
Request Headers = 我們請求的Headers頭部
Query String Paramenters = 我們請求的內容
分析結果
使用的傳輸方法:GET
請求的內容有 q , page , sort
從英文直譯的猜測
q = 查詢的關鍵字
page = 第幾頁
sort = 排序
程式範例
import requests #先引用requests
#目標網址為:https://ecshweb.pchome.com.tw/search/v3.3/all/results?q=關鍵字
#請求範例:https://ecshweb.pchome.com.tw/search/v3.3/all/results?q=%E8%97%8D%E8%8A%BD%E9%9F%B3%E9%9F%BF&page=1&sort=sale/dc
#建構網址
keyword = "藍芽音響"
url = "https://ecshweb.pchome.com.tw/search/v3.3/all/results?q="+keyword+"&page=1&sort=sale/dc"
#嘗試請求
rs = requests.get(url=url)
#輸出結果
data = rs.text
print(data)
輸出結果

Last updated
Was this helpful?