Python点击Js链接与selenium

时间:2015-09-17 13:01:42

标签: python web-scraping

我测试了网页抓图:http://www.guiadosquadrinhos.com/todas-capas-disponiveis

我需要在分页geting info页面中导航。 我需要点击链接javascript下一页:

的javascript:__ doPostBack(' ctl00 $ $搜索Maincontent $ lstProfileView $ dataPagerNumeric2 $ ctl02 ctl00&#39)

from selenium import webdriver
import time

driver = webdriver.PhantomJS(executable_path='C:\Python27\Tools\phantomjs\phantomjs.exe')
driver.get("http://www.guiadosquadrinhos.com/todas-capas-disponiveis")
#print(driver.find_elements_by_class_name("numero_capinha")[0].text)
#driver.find_elements_by_class_name("next_last")[0].click()
#time.sleep(5)
print(driver.find_elements_by_class_name("numero_capinha")[0].text)
driver.find_elements_by_class_name("next_last")[0].click()
print(driver.find_elements_by_class_name("numero_capinha")[0].text)

我的代码返回:

  

sobreontem - Independente

     

回溯(最近一次呼叫最后一次):文件" teste_selenium.py",第10行,在   driver.find_elements_by_class_name(" next_last")[0] .click()文件" C:\ Python27 \ lib \ site-packages \ selenium \ webdriver \ remote \ webelement.py",   第74行,点击   self._execute(Command.CLICK_ELEMENT)File" C:\ Python27 \ lib \ site-packages \ selenium \ webdriver \ remote \ webelement.py",   第453行,在_execute中   return self._parent.execute(command,params)File" C:\ Python27 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py",   201行,执行中   self.error_handler.check_response(response)File" C:\ Python27 \ lib \ site-packages \ selenium \ webdriver \ remote \ errorhandler.py",   第181行,在check_response中   raise exception_class(message,screen,stacktrace)selenium.common.exceptions.ElementNotVisibleException:Message:   {" errorMessage":"元素当前不可见,可能不是   操纵""请求" {"头" {"接受":"应用/ JSON""接受-encoding":"身份""连接":"靠近"" Content-Length的":" 81&# 34;,"内容类型":"应用/ JSON;字符集= UTF-8""主机":" 127.0.0.1:63160&# 34;,"用户代理":" Python的的urllib / 2.7"}" httpVersion":" 1.1"&# 34;方法":" POST""后":" {\"的sessionId \&#34 ;:   \" 5d3cfdc0-5d3b-11e5-b784-67706273a0bb \",\" id \":   \":WDC:1442494581220 \"}"" URL":" /点击"" urlParsed":{& #34;锚":"""查询":"""文件":"单击&# 34;,"目录":" /""路径":" /点击""相对于&#34 ;: " /点击""端口":"""主机":"""密码":"""使用者":""" USERINFO":"&#34 ;, "权威":"""协议":"""源":" /单击"" queryKey":{},"大块":["单击"]}" urlOriginal":&#34 ; /会话/ 5d3cfdc0-5d3b-11e5-b784-67706273a0bb /元件/%3Awdc%3A1442494581220 /点击"}}   屏幕截图:可通过屏幕获取

什么是问题?

1 个答案:

答案 0 :(得分:3)

因为,您正在执行以下操作 -

driver.find_elements_by_class_name("next_last")[0].click()

如果您查看源代码,则会有多个具有此类名称的元素,并且第一个元素被禁用,因为这是针对上一个按钮而您位于第一页。