一、Selenium PhantomJs 简介
PhantomJs 是一个基于 WebKit 的无界面的、可脚本编程的 Web 浏览器引擎,而 Selenium 是一种自动化测试工具,它可以控制浏览器的行为,实现模拟用户的操作。PhantomJs 和 Selenium 结合使用,可以实现网页自动化操作和测试。然而有时候我们在使用 Selenium PhantomJs 时,可能需要设置请求的 header 信息,以便模拟不同的请求头进行页面的访问。下面就来介绍一下在 Python 下使用 Selenium PhantomJs 设置 header 的方法。

二、设置 header 的方法
1. 创建 PhantomJs 的 DesiredCapabilities 对象:在使用 Selenium PhantomJs 时,可以通过创建 DesiredCapabilities 对象来设置请求的 header 信息。DesiredCapabilities 是一个用于定义浏览器的配置选项的类,通过该类可以设置各种选项,包括请求的 header。首先需要导入 selenium 库中的 webdriver 和 DesiredCapabilities 模块,然后创建一个 DesiredCapabilities 对象,然后通过 set_header 方法来设置请求的 header 信息,最后再将该对象传递给 PhantomJs 的 webdriver 初始化方法中。

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

# 创建DesiredCapabilities对象
dcap = Dict(webdriver.DesiredCapabilities.PHANTOMJS)
# 设置header信息
dcap['phantomjs.page.customHeaders.User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'

# 初始化PhantomJs的webdriver并传入DesiredCapabilities对象
driver = webdriver.PhantomJS(desired_capabilities=dcap)
Python

2. 使用 add_header 方法设置 header 信息:除了上述的方法,还可以使用 PhantomJs 的 webdriver 提供的 add_header 方法来设置 header 信息。add_header 方法接受两个参数 ——header 的名称和 header 的值,通过该方法可以任意添加不同的 header。在初始化 PhantomJs 的 webdriver 之后,可以通过调用该方法,来添加相应的 header 信息。

from selenium import webdriver

# 初始化PhantomJs的webdriver
driver = webdriver.PhantomJS()
# 设置header信息
driver.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36')
Python

3. 设置无效 header:有些网站为了防止爬虫,会检查请求的 header 信息,如果出现不合法的 header,可能会拒绝请求或返回错误信息。在爬取这些网站时,可以尝试设置一些不常见的 header 来绕过检查。例如,在设置 User-Agent 时,可以使用一些非常规的字符串,如 'Googlebot' 或 'bingbot',这样可以模拟搜索引擎爬虫。

4. 其他设置:在使用 Selenium PhantomJs 时,还可以通过其他方式设置 header 信息,例如通过设置环境变量、通过 Proxy、通过注册 ChromeDriver 等方式。具体的设置方法根据实际情况选择。

三、总结
本文介绍了在 Python 下使用 Selenium PhantomJs 设置 header 的方法。通过创建 DesiredCapabilities 对象或使用 PhantomJs 的 webdriver 的 add_header 方法,可以实现设置请求的 header 信息。设置不同的 header 可以模拟不同的请求头来进行网页访问,提高爬虫的稳定性,并绕过网站对爬虫的检查。