0%

爬虫利器selenium和无头浏览器的使用

0. 前言

Selenium 的初衷是打造一款优秀的自动化测试工具,但是慢慢的人们就发现,Selenium 的自动化用来做爬虫正合适。我们知道,传统的爬虫通过直接模拟 HTTP 请求来爬取站点信息,由于这种方式和浏览器访问差异比较明显,很多站点都采取了一些反爬的手段,而 Selenium 是通过模拟浏览器来爬取信息,其行为和用户几乎一样,反爬策略也很难区分出请求到底是来自 Selenium 还是真实用户。

通过 Selenium 来做爬虫,不用去分析每个请求的具体参数,比起传统的爬虫开发起来更容易。Selenium 爬虫唯一的不足是慢,如果你对爬虫的速度没有要求,那使用 Selenium 是个非常不错的选择。

1. 安装和使用

1
pip install selenium
1.1 页面操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 输入数据
browser.find_element_by_css_selector('.rfm input[name="username"]').send_keys('123456')

# 选择数据
browser.find_element_by_xpath("//select[@name='questionid']/option[text()='父亲的手机号码']").click()

# 敲回车
browser.find_element_by_css_selector('button[name="loginsubmit"]').send_keys(Keys.ENTER)


# 只等3秒
browser.implicitly_wait(3)

# 获取cookie
cookies_list = driver.get_cookies()
cookies_dict = {}
for cookie in cookies_list:
cookies_dict[cookie['name']] = cookie['value']
print(cookies_dict)

2. 遇到的问题

2.1 ImportError: cannot import name ‘webdriver’

文件不能命名为selenium

2.2 Message: ‘chromedriver’ executable needs to be in PATH.

下载驱动 https://sites.google.com/a/chromium.org/chromedriver/downloads

2.3 Message: unknown error: cannot find Chrome binary
  • centos 安装 chrome

    1
    2
    3
    wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
    sudo yum localinstall google-chrome-stable_current_x86_64.rpm
    google-chrome --no-sandbox --version # 看到版本后去下载相关的driver
  • ubuntu 安装 chrome

    1
    2
    3
      wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    sudo apt install ./google-chrome-stable_current_amd64.deb
    google-chrome --no-sandbox --version

3. 参考资料

给作者打赏,可以加首页微信,咨询作者相关问题!