Selenium Chrome WebDriver配置代理访问的两种方式

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标识很容易看到就是我们的爬虫程序进行的访问。

参考资料


相关主题: