python - 如何使用 chromedriver 和 python 修复 selenium 代理
问题描述
代理使用 requests 库但不使用 selenium,但是 selenium 在不使用代理时功能齐全。
我已经尝试了许多来自 stackoverflow 的关于如何使用 selenium 代理的建议。最常见的是我粘贴在代码片段中的内容。但是,每次我使用它时,请求都会失败。
代理绝对可以通过请求库进行操作。
当我从 chrome 选项中删除代理参数时,它可以正常工作,但不能与代理参数一起使用。
任何人都可以推荐一些帮助
proxy = 'MY_PROXY_GOES_HERE'
url = 'https://google.co.uk/'
# Try with selenium
driver_path = "chromedriver"
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument(f'--proxy-server={proxy}')
driver = webdriver.Chrome(executable_path=driver_path, chrome_options=chrome_options)
driver.implicitly_wait(30) # seconds
driver.get(url=url)
# Try with requests
proxies = {'https': proxy}
response = requests.get(url, proxies=proxies)
解决方案
我试过你的代码,它可以工作,见下文。我只添加了一个随机代理服务器。根据您得到的异常,可能的猜测是隐式等待导致超时。所以我从下面的代码中删除了它。如果您(仍然?)超时尝试将默认页面超时(driver.set_page_load_timeout(xxx)
)更改为更高的值,chromedriver 的默认值为 60 秒。
from selenium import webdriver
proxy = 'http://202.60.227.65:57887'
url = 'https://google.co.uk/'
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument(f'--proxy-server={proxy}')
driver = webdriver.Chrome(options=chrome_options)
driver.get(url=url)
推荐阅读
- c# - 在 EntityFramworkCore.InMemory 提供程序中添加 Id = 0 的实体时出现问题
- python - 重新布线 2d 网格网络
- python - Python猜谜游戏-while循环只允许整数
- android - Android获取电话号码
- c# - 如何在 C# 中用另一个 XML 覆盖?
- java - 简单的 android tcp 应用程序不会更新主线程
- javascript - 将文本选择转换为突出显示的元素
- r - 小标题的枢轴式变换?
- go - 关闭在服务器端发送,但客户端仍然有连接
- token - 当我尝试获取 accessToken 时,Google 返回错误 500