python selenium 超时加载url 的解决办法

遇到的问题是:selenium 设置页面超时之后,捕获异常也无法继续get(url) 打开新的url页面。

Chrome Options类可用的和最常用的参数列表:

 

start-maximized:最大化模式打开

headless:无头模式(后台运行)

disable-extensions:扩展Chrome浏览器上现有的扩展

disable-popup-blocking:放入弹窗

make-default-browser:设置Chrome为替代浏览器

disable-infobars:防止Chrome显示“ Chrome正在被自动化软件控制”的通知

解决办法:

import pandas as pd
import time
import datetime
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities


chrome_options = Options()
# 无窗口模式
# chrome_options.add_argument('--headless')
# 解决反爬识别selenium
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])

# 设置默认编码为 utf-8,也就是中文
options.add_argument('lang=zh_CN.UTF-8')

# 通过设置user-agent,用来模拟移动设备
# 比如模拟 android QQ浏览器
options.add_argument('user-agent="MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"')

# 模拟iPhone 6
options.add_argument('user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"')


#禁止图片加载
prefs = {"profile.managed_default_content_settings.images": 2}
chrome_options.add_experimental_option("prefs", prefs)


desired_capabilities = DesiredCapabilities.CHROME
# 修改页面加载策略 
# none表示将br.get方法改为非阻塞模式,在页面加载过程中也可以给br发送指令,如获取url,pagesource等资源。
desired_capabilities["pageLoadStrategy"] = "none"

driver = webdriver.Chrome(chrome_options=chrome_options, executable_path='chromedriver_6254.exe', desired_capabilities=desired_capabilities)

设置代理:

为selenium爬虫添加代理,尽量选择静态IP,才能提升爬取的稳定性。因为如果选择selenium来做爬虫,说明网站的反爬能力比较高(要不然直接上scrapy了),对网页之间的连贯性,cookies,用户状态等有较高的监测。如果使用动态匿名IP,每个IP的存活时间是很短的(1~3分钟)。

from selenium import webdriver
# 静态IP:102.23.1.105:2005
# 阿布云动态IP:http://D37EPSERV96VT4W2:[email protected]:9020
PROXY = "proxy_host:proxy:port"
options = webdriver.ChromeOptions()
desired_capabilities = options.to_capabilities()
desired_capabilities['proxy'] = {
    "httpProxy": PROXY,
    "ftpProxy": PROXY,
    "sslProxy": PROXY,
    "noProxy": None,
    "proxyType": "MANUAL",
    "class": "org.openqa.selenium.Proxy",
    "autodetect": False
}
driver = webdriver.Chrome(desired_capabilities = desired_capabilities)

 

你可能感兴趣的:(学习笔记)