前言
开发爬虫程序,如果不做代理设置,本机的外网IP很容易被网站封掉,导致不能持续进行数据抓取。
而Selenium作为动态网页抓取的利器,我们有必要了解一下,如果对它进行代理设置,并正常访问网页。
方法一 add_argument()方式
示例代码如下:
```python 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()方式
示例代码如下:
```python 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标识很容易看到就是我们的爬虫程序进行的访问。