当遇到加载页面长时间加载不出来,导致程序异常的问题时,解决方法如下:
首先设置浏览器的超时时间,捕获到超时异常后,执行JavaScript脚本,windows.stop(),接下来脚本就可以继续往下运行了。
附上get页面超时后,要继续get其他页面的
解决方法
,请点击蓝色字体。
上面的解决方法详细见代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Ie()
#设置超时,双重保险
driver.set_page_load_timeout(10)
driver.set_script_timeout(10)
driver.get("http://***")
except:
print "timeout"
#执行js脚本
driver.execute_script("window.stop()")
print driver.title
user_name = driver.find_element_by_id("id_username")
user_name.send_keys("admin")
password = driver.find_element_by_id("id_password")
password.send_keys("admin"+Keys.RETURN)
print driver.title
log_out_ele = driver.find_element_by_partial_link_text("Log out")
driver.quit()
页面超时问题
当调用driver.get(“https://xxxx.xxx.xxx”)来访问某页面时,get方法通常会阻塞浏览器直到页面完全加载后才执行后面的动作,若一个页面加载过慢,则会导致get方法一直阻塞。会抛出如下异常:
超时报错一:java.net.SocketTimeoutException: timeout
超时报错二:java.net.SocketTimeoutException: Read ti
selenium最初是一个自动花测试工具,而爬虫中使用它主要是为了解决requests无法直接薅js加密的代码问题,也就是动态数据加载的网站
selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器,我这里是用谷歌的
浏览器中也要下载webdriver
首先查看自己浏览器的版本
接着到官网下载:CNPM Binaries Mirror
from selenium.webdriver import Chrome
chrome=Chrome(executable_path='C:\Program Files\Google\Chrome\Application\chrome.exe')
chrome.get("https://www.baidu.com")
从 gif 直观地感受一下效果
我有大量 url 需要访问,但是有些 url 会超时
为了避免超时,设置driver.set_page_load_timeout(3)限时3秒,一旦超时就会产生 TimeoutException
而且超时后标签页就卡柱了,只能通过 driver.close()关闭
如果你只有一个标签页,关闭就直接退出了,还得重启
自然想到先保留一个备用的标签,原标签超时需要关闭的时候就切换过来,然后再关闭,并打开新标签,保证任何时候都有两个标签页可用!!
def visit(urls, t.
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入
欢迎使用Markdown编辑器
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar