追了一天動漫來回點東西, 轉生公主天才千金好香,槍神畫面好屌 遇到問題時除了試著使用其它工具或做法, 還能做的 - 或許也是應該先做的 - 是瞭解問題。 或許你是後端工程師,對前端不熟,那看看你們公司有沒有前端工程師可以問, 不然試著到前端社群上請益看看。 要爬 https://www.hktvmall.com/hktv/zh 這樣一個網站需要注意什麼? 怎麼爬比較快? 或許有人看了看可以提供一些回饋, 例如有防 csrf 機制,token 就寫在頁面上一個隱藏的 input 裡, https://en.wikipedia.org/wiki/Cross-site_request_forgery 會直接跟頁面 html 一起吐回來 後端用的應該是 JAVA,所以 cookie 有個 JSESSIONID, 不過因為它的設定是 http only 無法以 JS 取得 另外本身就神慢,不論是頁面或 API 經常需要 10~30 秒 瞭解了問題之後,或許解法就不會是改用 Selenium 之外的工具, 而是使用 Selenium 但調整做法。 因為就算換了工具慢還是慢在網站本身 例如,一樣先用 Selenium 連到該頁面, 但是不再用操作頁面連結的方式做,而是設法取得 CSRF token 組參數打 api, 使用 execute_script 應該就能在第一次頁面載入後由 input 元素取得 CSRF token, 再使用 execute_async_script 打 api 取得資料 Ref : https://stackoverflow.com/q/28057338/1042731 而由於是實際跑在瀏覽器,可以正確的帶上 JSESSION ID, 並且瀏覽器本身的同 domain request 數量限制會自動避免你變成 DDOS (印像中是 4 或 8,不確定現在有沒有改變) 而像以下是一個可以跑的 api 示例,我沒怎麼研究, 只是直接拿開發者工具裡看到的參數來用 https://pastebin.com/ANgNVxqF 說回為什麼 "瞭解問題" 重要, 弄清楚問題是什麼再對症下藥,比較不會花大量時間做無用功, 當問題解決時也比較清楚問題究竟是什麼,為什麼能解決, 才能真的吸收並得到經驗 有時候不一定要急著趕工, 稍微停下來,多查一查想想看,反而可能更快更有收獲 ※ 引述《andy22543 (andy22543)》之銘言: : 最近接到一個專案要爬購物網站存mySQL : 爬分類裡面各產品資訊+內頁詳細資訊 : 目前已經使用selenium+multithreading寫完 : 可惜速度不夠快 : 所以正改用request改寫 : 但發現不管用什麼方法(session、cookie、payload)都沒辦法取得首頁的商品資訊 : 已經把網路上能看的解決方式都看過一遍還是無解 : 另外也試過network的event(貌似是api? : 把相關資訊post上去爆出ConnectionError: ('Connection aborted.' : 所有能試解法都試過還是無法 : 有沒有精通的高手幫看一下還有甚麼辦法呢 : 附上連結 : https://www.hktvmall.com/hktv/zh/%E8%B6%85%E7%B4%9A%E5%B7%BF%E5%A0%B4/%E8%B6%85%E7%B4%9A%E5%B8%82%E5%A0%B4/%E5%86%B7%E5%87%8D-%E6%80%A5%E5%87%8D%E9%A3%9F%E5%93%81/main/search?page=0&q=%3Arelevance%3Astreet%3Amain%3Acategory%3AAA11110000000 : ----- : Sent from JPTT on my iPhone -- ※ 發信站: 批踢踢實業坊(ptt-web.org.tw), 來自: 114.37.169.144 (臺灣) ※ 文章網址: https://ptt-web.org.tw/Soft_Job/M.1674828041.A.5EB ※ 編輯: lovdkkkk (114.37.169.144 臺灣), 01/28/2023 00:47:48
kimi112136: 大眼鏡的威席不是熟悉的威席QQ 01/28 11:42