[問題] python爬蟲,設定driver很慢

看板Python作者 (bckkt)時間7年前 (2018/02/22 16:39), 7年前編輯推噓3(3019)
留言22則, 4人參與, 7年前最新討論串1/1
原本使用requests.get抓網頁原始碼,但是抓不完整 後來使用PhantomJS花了7~8秒抓到了完整的原始碼 不過彈出 Selenium support for PhantomJS has been deprecated, please use headless 所以最後用chrome並使用headless模式 1 from selenium import webdriver 2 from selenium.webdriver.chrome.options import Options 3 chrome_options = Options() 4 chrome_options.add_argument('--headless') 5 driver = webdriver.Chrome(chrome_options=chrome_options) 6 driver.get("http://goo.gl/iuh5tS") 成功抓到更深的內容,但是執行第5行很慢很慢 大概要花7秒(用PhantomJS設定driver也是7~8秒) 不知有沒有什麼方法能夠快一點,謝謝各位大大 想說用另一個想法試試,打開CHROME的開發者工具,看一下Network底下的XHR 發現https://imgur.com/CVoIpjB
約略每3秒會彈出一個請求,查了一下 1.AJAX的一種常見用法是使用AJAX載入JSON資料,然後在瀏覽器端渲染。如果能直接抓取 到JSON數據,會比HTML更容易解析。 2.XMLHttpRequest 縮寫為 XHR 3.Type為xhr,這就是一個Ajax 請求 4.其中Request Headers 中有一個信息為X-Requested-With:XMLHttpRequest,這就標記了 此請求是Ajax請求。 5.發現這是一個POST類型的請求,請求連結是 GetGameData.ashx?r=1519301370235,也看到了json格式的資料 參數為r,r一直變動,查了一下,r的產生是new Date().getTime() 直接對這些連結opon in new tab打開都空白 目前死在這邊,如果r有規律的話就輕鬆了,直接打開頁面都是空白,json什麼的都沒有 不知道開發者工具是怎麼偵測這些r的... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.37.187.76 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1519288777.A.104.html ※ 編輯: bckkt (114.37.187.76), 02/22/2018 21:27:20 ※ 編輯: bckkt (114.37.187.76), 02/22/2018 21:47:27 ※ 編輯: bckkt (114.37.187.76), 02/22/2018 21:51:38

02/23 18:59, 7年前 , 1F
自己發 ajax 不合你的需要嗎
02/23 18:59, 1F

02/23 19:25, 7年前 , 2F
後來發現用第一個方法 速度上就是硬傷
02/23 19:25, 2F

02/23 19:25, 7年前 , 3F
研究才發現一直彈出的頁面是Ajax請求
02/23 19:25, 3F

02/23 19:26, 7年前 , 4F
所以想說從這條切入研究,但也沒那麼簡單,還在研究中就是了
02/23 19:26, 4F

02/24 18:22, 7年前 , 5F
但是你都知道是要多個時間參數,你自己生當錢時間就好了?
02/24 18:22, 5F

02/24 18:34, 7年前 , 6F
你用 time.time()的那個毫秒數拿去post可以嗎?
02/24 18:34, 6F

02/24 21:41, 7年前 , 7F
謝謝回應,我沒試過但覺得不行,我生的時間跟他生的時間
02/24 21:41, 7F

02/24 21:41, 7年前 , 8F
應該是不一樣的時間
02/24 21:41, 8F

02/24 21:43, 7年前 , 9F
form data還有個變數gidGroup,這變數也是變動很大的
02/24 21:43, 9F

02/24 21:44, 7年前 , 10F
今天改用按鍵精靈去抓json,想說丟到某處之後,再分解json
02/24 21:44, 10F

02/24 21:46, 7年前 , 11F
分解好的資料,再看是要丟到EXCEL,還是怎樣呈現的,再看看
02/24 21:46, 11F

02/24 21:59, 7年前 , 12F
不是 我有去試JS那個func 是1970到現在的毫秒數
02/24 21:59, 12F

02/24 22:01, 7年前 , 13F
所以python這個產出來應該是一樣的東西才對
02/24 22:01, 13F

02/24 22:02, 7年前 , 14F
我試試
02/24 22:02, 14F

02/24 22:26, 7年前 , 15F
加上header來請求,網頁是空白
02/24 22:26, 15F

02/24 22:26, 7年前 , 16F
我來研究一下form data的gidGroup是怎麼產生的好了
02/24 22:26, 16F

02/24 22:27, 7年前 , 17F
下次連form data一起丟
02/24 22:27, 17F

02/24 22:36, 7年前 , 18F
直接複製最近一個gidGroup,連著其他data一起丟,出現了!!
02/24 22:36, 18F

02/24 22:37, 7年前 , 19F
但不知道gidGroup怎麼產生的,等這個變數搞懂,就可以爬了
02/24 22:37, 19F

02/24 22:41, 7年前 , 20F
我發現不用丟gidGroup,json也會出現耶,太神奇了
02/24 22:41, 20F

02/24 22:43, 7年前 , 21F
謝謝你們提醒我試試直接取得時間直接post
02/24 22:43, 21F

03/06 04:40, 7年前 , 22F
文章代碼(AID): #1QZe7944 (Python)
文章代碼(AID): #1QZe7944 (Python)