Re: [問題] python 爬取pchome資料

看板Python作者 ( )時間9年前 (2016/08/06 00:28), 9年前編輯推噓4(408)
留言12則, 2人參與, 最新討論串2/3 (看更多)
各位前輩好,最近也在嘗試爬pchome,雖然知道是javascript,但還是不太能解決 爬文後很幸運挖到這篇 也照了這不是ptt大的code測試

04/11 13:38,
剛剛試了一下,應該是JS的問題,所以我改用selenium
04/11 13:38

04/11 13:39,
之後就搞定了 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

08/06 05:00, , 1F
其實就很單純的觀察封包偽裝成瀏覽器送封包到server
08/06 05:00, 1F
pchome 這裡似乎沒有防 如果要爬露天可能就要偽裝一下

08/06 20:46, , 2F
假如是偶爾成功 那可能是要加入延遲讓網頁跑完
08/06 20:46, 2F

08/06 20:47, , 3F
讓javascript的內容被載入之後才抓得到 因為se是個
08/06 20:47, 3F

08/06 20:47, , 4F
瀏覽器 要給他點時間處理
08/06 20:47, 4F

08/06 20:48, , 5F
試試看加這個 http://tinyurl.com/he7h8aa 讓他完全
08/06 20:48, 5F

08/06 20:49, , 6F
載入之後再進行抓取
08/06 20:49, 6F

08/06 20:50, , 7F
假如要擺脫 se 可以用post request的方式直接抓取
08/06 20:50, 7F

08/06 20:51, , 8F
內容 但是我之前對pchome採post/request的方式都一
08/06 20:51, 8F

08/06 20:53, , 9F
不太成功 se 搞起來比較方便就是了 缺點就是慢跟肥
08/06 20:53, 9F

08/06 22:06, , 10F
剛剛試了一下 request 的方式 OK了 不曉得之前是什
08/06 22:06, 10F

08/06 22:07, , 11F
麼問題卡住 總之應該還行 一樣要加點delay會比較穩
08/06 22:07, 11F

08/06 22:07, , 12F
非常感謝這不是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
文章代碼(AID): #1NfBx5W2 (Python)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 2 之 3 篇):
文章代碼(AID): #1NfBx5W2 (Python)