[問題] 萊爾富門市爬蟲 踢到鐵板

看板Python作者 (低進)時間5年前 (2020/05/09 17:58), 5年前編輯推噓6(6018)
留言24則, 7人參與, 5年前最新討論串1/2 (看更多)
各位大大好,遇到一個鐵板, 可能跟程式語言比較沒關係, 專案需要定期抓萊爾富的全部所有門市, 找到其官網門市查詢所在位置, https://www.hilife.com.tw/storeInquiry_street.aspx 大約看一下網頁原碼, 應該是ASP.Net & WebForm無誤, GET跟POST都是這一支, 所以邏輯思路如下: 方法1: 先用GET不帶參數發出Request, 取得回傳網頁後,剖析取出 __VIEWSTATEGENERATOR __EVENTVALIDATION __VIEWSTATE __EVENTTARGET __EVENTARGUMENT __LASTFOCUS 等等數值, 然後塞入POST內, 再填入自訂的縣市CITY與鄉區AREA後, 發出Request, 台北市全區沒問題, 都可以取得門市資料, 但詭異的是: 其他縣市與鄉區卻直接拒絕連結.....!!?? 試用方法2 先用GET取得__VIEWSTATE值之後, 再發出台北市中山區的POST, 得到正常回傳結果後再取一次全部__VIEWSTATE值, 然後再塞入,填上新北市林口區再發出POST, .....一樣失敗,拒絕連結! 試用方法3 把GET取得__VIEWSTATE值, 手工寫入靜態HTML網頁內的FORM input內, 指定雲林縣虎尾鎮 然後按submit post出去, .........成功正常回傳 感覺有點崩潰,沒頭緒.... 猜想因為台北市是default頁, 所以沒有設檢查, 不瞭解ASP.Net的後端作法, 有大大可以提供解法建議嗎? 感恩~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 119.14.24.108 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1589018306.A.D26.html ※ 編輯: somehog (119.14.24.108 臺灣), 05/09/2020 18:03:36

05/09 18:19, 5年前 , 1F
這時候應該要看你打成功的跟打失敗的差別吧
05/09 18:19, 1F
如果是方法1的話,差別就只是填入台北市跟其他縣市不同,其他參數完全相同

05/09 18:21, 5年前 , 2F
我昨天爬ubereats是用cookie,裡面有QLoc之類的cook
05/09 18:21, 2F

05/09 18:21, 5年前 , 3F
ies,ˊ真的沒想法從網址下手也可
05/09 18:21, 3F

05/09 18:24, 5年前 , 4F
不過爬蟲本來就要花時間摸網頁結構,直接開selenium
05/09 18:24, 4F

05/09 18:24, 5年前 , 5F
萬解也可
05/09 18:24, 5F
也有懷疑cookie的嫌疑...只好用selenium 硬破了 還真想知道兇手是誰呀

05/09 20:16, 5年前 , 6F
想研究倒店與位置的關聯性嗎
05/09 20:16, 6F

05/09 21:40, 5年前 , 7F
有寫過網頁了解前後端架構對爬蟲也會有幫助
05/09 21:40, 7F
※ 編輯: somehog (119.14.24.108 臺灣), 05/09/2020 22:53:34 ※ 編輯: somehog (119.14.24.108 臺灣), 05/09/2020 22:57:13

05/09 23:34, 5年前 , 8F
我很討厭這種架構 不用Selenium也能解
05/09 23:34, 8F

05/09 23:35, 5年前 , 9F
我是把這種網頁當用後端渲染前端XDDD
05/09 23:35, 9F

05/09 23:36, 5年前 , 10F
你要注意到 要跳縣市 __EVENTTARGET 是要是 CITY
05/09 23:36, 10F

05/09 23:37, 5年前 , 11F
每一個request 都要接著上個request中的hidden form
05/09 23:37, 11F

05/09 23:38, 5年前 , 12F
只要有一個環節錯 就炸掉了
05/09 23:38, 12F
__EVENTTARGET確認填入CITY無誤, 方法2就是取第一次POST台北市後得到的FORM內所有 欄值再套入一個新的POST基隆市...然後就GG了 ※ 編輯: somehog (119.14.24.108 臺灣), 05/09/2020 23:41:09

05/09 23:44, 5年前 , 13F
我寫一個看看
05/09 23:44, 13F

05/09 23:51, 5年前 , 14F
期待T大抓到真兇
05/09 23:51, 14F

05/10 00:08, 5年前 , 15F
回你了在板上,之前做過類似的,而且還是一個請假系統...
05/10 00:08, 15F

05/10 00:08, 5年前 , 16F
每請一節課要1個封包XD
05/10 00:08, 16F

05/10 10:41, 5年前 , 17F
我先不看回覆猜一下 每次選擇縣市dropdown
05/10 10:41, 17F

05/10 10:41, 5年前 , 18F
都會重新刷新網頁,所以viewState等參數,也要重新取得
05/10 10:41, 18F

05/10 10:42, 5年前 , 19F
需要分析各縣市 對於html隱藏參數的影響
05/10 10:42, 19F

05/10 10:43, 5年前 , 20F
我選擇縣市dropdown 不會有新的cookie 應該跟cookie無關
05/10 10:43, 20F

05/10 10:48, 5年前 , 21F
看起來__VIEWSTATE跟__EVENTVALIDATION都會隨著更換縣市
05/10 10:48, 21F

05/10 10:48, 5年前 , 22F
而跟著更換,所以要研究一下如何取得新的隱藏欄位值
05/10 10:48, 22F

05/10 12:22, 5年前 , 23F
hidden我沒看萊爾富這的,之前做過的是XML然後是沒辦法
05/10 12:22, 23F

05/10 12:22, 5年前 , 24F
靠自己生產出來的,如果能自己生產出來就能跳頁爬了
05/10 12:22, 24F
文章代碼(AID): #1Ujdx2qc (Python)
文章代碼(AID): #1Ujdx2qc (Python)