看板 Python 關於我們 聯絡資訊
大家好,再擷取網站內容的時候 遇到了跳出視窗,但試了一些方法還是沒辦法抓到跳出視窗的內容 以下是大概的code from selenium import webdriver from selenium.webdriver.support.ui import Select driver = webdriver.Chrome('../chromedriver') driver.get('http://mops.twse.com.tw/mops/web/t05st10_ifrs') Select(driver.find_element_by_id('isnew')).select_by_index(1) driver.find_element_by_id('co_id').send_keys(2892) driver.find_element_by_id('year').send_keys(102) driver.find_element_by_id('month').send_keys(1) driver.find_element_by_xpath("//input[@type='button' and\ @value=' 查詢 ']").click() time.sleep(1) driver.find_element_by_xpath("//id='t05st10_ifrs_form']/table[1]/\ tbody/tr[2]/td[3]/input").click() driver.switch_to_window(driver.window_handles[1]) print(driver.page_source) driver的handle確實換到跳出的視窗了,可是要取得視窗內的訊息會有錯誤 想請問怎麼解決,拜託大家了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.253.33 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1496419305.A.C18.html
starcaspar: 考慮用requests嗎?06/03 22:43
starcaspar: https://hackmd.io/s/r1B0cHxzb06/03 22:44
starcaspar: 原因是這樣的,他的window是由js產生出來的,沒有sour06/03 22:45
starcaspar: ce code06/03 22:45
starcaspar: 所以Page Source抓到空06/03 22:45
starcaspar: 用Burp找到了POST方法,放在上面那個連結,參數可以依06/03 22:48
starcaspar: 據你要的去調整06/03 22:48
謝謝!因為要動態展示怎麼爬網站的,所以暫時還需要用Selenium 但是js產生出來的視窗真的沒有辦法取得內容嗎,我看webdriver可以取得js產生的 alert text,但是我試過好像也不是alert。 ※ 編輯: ntumath (140.112.253.33), 06/04/2017 19:38:59
wennie0433: 你想要把source code全部秀出來? 還是抓某個欄位06/06 01:19
wennie0433: 可以的話 想看一下你的error log06/06 01:35
wennie0433: 因為我試過是可以把source code秀出來的06/06 01:36
Ok 晚點我可能會在重發一篇
swds: sleep的秒數可能要設久一點,讓它source code都下載完06/06 09:32
starcaspar: 不不,那不是時間問題06/06 11:02
starcaspar: 正如我上面說的,他是js產生的,他有render之後的code06/06 11:02
starcaspar: ,但沒有source code,所以你chrome可以按「檢查」,06/06 11:02
starcaspar: 但是不能按「檢視原始碼」06/06 11:02
starcaspar: 因此selenium的page source在這時候是拿不到東西的06/06 11:04
謝謝starcaspar的解釋,所以Selenium對於網頁用js展示出來的視窗是無法處理嗎? 如果 這樣那我也只好回到requests了 ※ 編輯: ntumath (140.112.25.105), 06/06/2017 11:23:25 ※ 編輯: ntumath (140.112.25.105), 06/06/2017 11:25:20
starcaspar: 不不,只是我還沒找到方法而已 06/06 12:05
wennie0433: 你可以改用Firefox, chrome確實不行 try it 06/06 17:26
s860134: 實際上是有原始碼的XD 可以嘗試他還在載入的時候按F12 06/07 22:55
s860134: 你會看到很明確的 chrome 的開發者工具是有抓到的... 06/07 22:55
s860134: http://imgur.com/a/pFCVR 06/07 22:57
s860134: 感覺這個是個 webdriver 的 bug ,看要不要發個 issue 06/07 22:58
starcaspar: 這個bug應該不是只是driver喔 06/07 23:23
starcaspar: 你有對網頁右鍵檢視原始碼嗎? 06/07 23:23
starcaspar: 切到window之後很多函數都卡住了 06/08 11:06
starcaspar: 你介意覆寫他的openWindow函數嗎 06/08 11:06
starcaspar: 你注意看,其實你要的東西都在那個函數產生的 06/08 11:06
starcaspar: 如果用execute_script去覆寫或是另外執行這樣去取得資 06/08 11:06
starcaspar: 料 06/08 11:06
starcaspar: 另外其實我個人覺得selenium作用來測試,雖然他也是可 06/08 11:06
starcaspar: 以作為爬蟲的目的啦 06/08 11:06
starcaspar: 不然換個driver跑,或許還比較快解決 06/08 11:07
rdman: 照你所說,你有試過直接抓跳出視窗裡面元件的XPath嗎? 07/13 15:13