Selenium Chrome WebDriver配置代理访问的两种方式
前言
开发爬虫程序,如果不做代理设置,本机的外网IP很容易被网站封掉,导致不能持续进行数据抓取。
而Selenium作为动态网页抓取的利器,我们有必要了解一下,如果对它进行代理设置,并正常访问网页。
方法一 add_argument()方式
示例代码如下:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
myProxy = "103.240.35.229:54743"
options = Options()
options.binary_location = '/usr/bin/google-chrome'
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
options.add_argument('--proxy-server=%s' % myProxy)
driver = webdriver.Chrome(executable_path='./chromedriver', chrome_options=options)
driver.get("https://www.xtuz.net")
driver.implicitly_wait(5)
driver.save_screenshot('xtuz.png')
driver.quit()
该方法类似在命令行的方式,直接通过--proxy-server
这个参数传给chrome, 后者则以这个地址来进行访问。从代码开发的角度来说,非常简单方便。
方法二 set_capability()方式
示例代码如下:
from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType
from selenium.webdriver.chrome.options import Options
myProxy = "103.240.35.229:54743"
p = {
'proxyType': 'MANUAL',
'httpProxy': myProxy,
'ftpProxy': myProxy,
'sslProxy': myProxy,
'noProxy':''}
options = Options()
options.binary_location = '/usr/bin/google-chrome'
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
options.set_capability("proxy", p)
driver = webdriver.Chrome(executable_path='./chromedriver', chrome_options=options)
driver.get('https://www.xtuz.net')
driver.implicitly_wait(5)
driver.save_screenshot('www.xtuz.net.png')
driver.quit()
这种方式主要通过set_capability()
对代理信息进行配置,相比方法一来说,可以选择配置的类型更灵活和丰富。
验证代理生效
我们查看兔子先生的后台访问日志,可以看到有来自该代理服务器的访问请求,如图
从User-Agent标识很容易看到就是我们的爬虫程序进行的访问。
参考资料
相关主题: