看板 Python 關於我們 聯絡資訊
各位前輩好,最近也在嘗試爬pchome,雖然知道是javascript,但還是不太能解決 爬文後很幸運挖到這篇 也照了這不是ptt大的code測試
Thisisnotptt: 剛剛試了一下,應該是JS的問題,所以我改用selenium 04/11 13:38
Thisisnotptt: 之後就搞定了 http://codepad.org/QeZAV5HO 04/11 13:39
但同樣的code 執行好多次才能成功一次 是我的電腦業障重嗎OAQQ 其餘的失敗也沒什麼訊息 就是只抓回空殼 (我猜應該是沒有成功執行js?) 我目前要做的 是已經有一堆pchome網址 想要從網址爬回對應商品 發現雖然head裡的meta就有了 但也不知道該如何簡單的只抓回這個部分 所以總結想請問各位前輩: 1.沒辦法每次都抓回網頁,是pchome的防範機制嗎?該何解QQ 2.還是說有更簡單的方法可以只抓回head那個部分,覺得抓回整個網站有點overkilled 但現在就連硬要抓整個網站回來都做不到...( ̄▽ ̄#)﹏﹏ 感謝各位前輩指點迷津OTZ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.153.225 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1470414533.A.802.html
ripple0129: 其實就很單純的觀察封包偽裝成瀏覽器送封包到server 08/06 05:00
pchome 這裡似乎沒有防 如果要爬露天可能就要偽裝一下
Thisisnotptt: 假如是偶爾成功 那可能是要加入延遲讓網頁跑完 08/06 20:46
Thisisnotptt: 讓javascript的內容被載入之後才抓得到 因為se是個 08/06 20:47
Thisisnotptt: 瀏覽器 要給他點時間處理 08/06 20:47
Thisisnotptt: 試試看加這個 http://tinyurl.com/he7h8aa 讓他完全 08/06 20:48
Thisisnotptt: 載入之後再進行抓取 08/06 20:49
Thisisnotptt: 假如要擺脫 se 可以用post request的方式直接抓取 08/06 20:50
Thisisnotptt: 內容 但是我之前對pchome採post/request的方式都一 08/06 20:51
Thisisnotptt: 不太成功 se 搞起來比較方便就是了 缺點就是慢跟肥 08/06 20:53
Thisisnotptt: 剛剛試了一下 request 的方式 OK了 不曉得之前是什 08/06 22:06
Thisisnotptt: 麼問題卡住 總之應該還行 一樣要加點delay會比較穩 08/06 22:07
Thisisnotptt: http://codepad.org/25lxbLvn 08/06 22:07
非常感謝這不是ptt大,也把解決步驟描述一下供後人參考: 測試幾次後發現 的確是時間的問題 初步嘗試加入time.sleep()後能解決 但更好的解決方法似乎是wait.until(): http://selenium-python.readthedocs.io/waits.html#explicit-waits 在這裡我設定的是 等到#PriceTotal載入為止 因為原本的框架沒有這東西,如: wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#PriceTotal"))) 至於直接request的部分 因為已經寫好selenium了 之後改版再來研究看看好了A_A ※ 編輯: BigBank (36.231.153.225), 08/07/2016 01:31:04