看板 Python 關於我們 聯絡資訊
最近在嘗試爬蟲以及用selenium對網頁做一些自動化的練習 發現只要是HTML5 的網頁遊戲幾乎都無法直接用開發者工具(chrome F12)的element去選 到我要的物件 例如這個遊戲: http://www.relfind.com/game/magician.html 進去之後的score得分是動態顯示的 還有開始按鈕感覺也是個物件 但用element去選會是選到一整個畫布 查資料後我的理解(推測)是 canvas會把所有元件(例如按鈕、分數)綁在一起視為一張圖 片, 所以無法直接使用開發者工具的element去選取(去選的話也只是選到這張大畫布) 目前查到感覺可行的解法是用selenium action去模擬滑鼠的行為 把滑鼠移到按鈕的座標上去做點擊 但這樣如果我想取到遊戲的得分就還是做不到 想請問有沒有什麼辦法可以取到canvas畫布下的按鈕element呢? 或是前輩們有沒有什麼關鍵字可以提供我google -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.249.60.124 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1552633887.A.15D.html ※ 編輯: m87dd05 (60.249.60.124), 03/15/2019 15:12:13
rexyeah: 直接fire JS event就可以了 不用真的去點按鈕 03/15 15:56
rexyeah: 我看他的game.js很淺顯易懂,你可以試試看 03/15 15:58
m87dd05: 請問fire 是指自己去爬程式碼嗎?如果是的話遇到特意醜化 03/15 17:03
m87dd05: 隱藏code的情境下是不是就也行不通了? 03/15 17:03
m87dd05: 會有這樣的疑問是想說假使今天想爬一個網站,用find all 03/15 17:05
m87dd05: 或get element之類的去爬全部程式碼找出我要的東西,通常 03/15 17:05
m87dd05: 我會先用開發者工具選出我要的element但若遇到這類型的 03/15 17:06
m87dd05: 網頁就行不通了 03/15 17:06
rexyeah: 那是畫布,button 不是掛在DOM tree上,是畫出來的一張圖 03/15 17:29
rexyeah: ,並不是對elements 觸發事件 你看他的js是認座標,另外 03/15 17:29
rexyeah: 其實爬蟲真的case by case. 去研究作者的寫法爬他的code 03/15 17:29
rexyeah: ,然後成功抓到你要的資訊,我覺得相當有趣啊。 03/15 17:29
m87dd05: 好的感謝r大,我再來細細研究看看 03/15 17:58