[问题] Selenium 撷取跳出视窗

楼主: ntumath (math mad)   2017-06-03 00:01:42
大家好,再撷取网站内容的时候
遇到了跳出视窗,但试了一些方法还是没办法抓到跳出视窗的内容
以下是大概的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确实换到跳出的视窗了,可是要取得视窗内的讯息会有错误
想请问怎么解决,拜托大家了
作者: starcaspar (Kaspar)   2017-06-03 22:43:00
考虑用requests吗?https://hackmd.io/s/r1B0cHxzb原因是这样的,他的window是由js产生出来的,没有source code所以Page Source抓到空用Burp找到了POST方法,放在上面那个连结,参数可以依据你要的去调整
作者: wennie0433   2017-06-06 01:19:00
你想要把source code全部秀出来? 还是抓某个字段可以的话 想看一下你的error log因为我试过是可以把source code秀出来的
作者: swds (天涯游子君莫问)   2017-06-06 09:32:00
sleep的秒数可能要设久一点,让它source code都下载完
作者: starcaspar (Kaspar)   2017-06-06 11:02:00
不不,那不是时间问题正如我上面说的,他是js产生的,他有render之后的code,但没有source code,所以你chrome可以按“检查”,但是不能按“检视原始码”因此selenium的page source在这时候是拿不到东西的不不,只是我还没找到方法而已
作者: wennie0433   2017-06-06 17:26:00
你可以改用Firefox, chrome确实不行 try it
作者: s860134 (s860134)   2017-06-07 22:55:00
实际上是有原始码的XD 可以尝试他还在加载的时候按F12你会看到很明确的 chrome 的开发者工具是有抓到的...http://imgur.com/a/pFCVR感觉这个是个 webdriver 的 bug ,看要不要发个 issue
作者: starcaspar (Kaspar)   2017-06-07 23:23:00
这个bug应该不是只是driver喔你有对网页右键检视原始码吗?切到window之后很多函数都卡住了你介意覆写他的openWindow函数吗你注意看,其实你要的东西都在那个函数产生的如果用execute_script去覆写或是另外执行这样去取得资料另外其实我个人觉得selenium作用来测试,虽然他也是可以作为爬虫的目的啦不然换个driver跑,或许还比较快解决
作者: rdman (古爱迪尔)   2017-07-13 15:13:00
照你所说,你有试过直接抓跳出视窗里面元件的XPath吗?

Links booklink

Contact Us: admin [ a t ] ucptt.com