接着几个月之前的(数据科学学习手札31)基于Python的网络数据采集(初级篇),在那篇文章中,我们介绍了关于网络爬虫的基础知识(基本的请求库,基本的解析库,CSS,正则表达式等),在那篇文章中我们只介绍了如何利用urllib、requests这样的请求库来将我们的程序模拟成一个请求网络服务的一端,来直接取得设置好的url地址中朴素的网页内容,再利用BeautifulSoup或pyspider这样的解析库来对获取的网页内容进行解析,在初级篇中我们也只了解到如何爬取静态网页,那是网络爬虫中最简单的部分,事实上,现在但凡有价值的网站都或多或少存在着自己的一套反爬机制,例如利用JS脚本来控制网页中部分内容的请求和显示,使得最原始的直接修改静态目标页面url地址来更改页面的方式失效,这一部分,我在(数据科学学习手札47)基于Python的网络数据采集实战(2)中爬取马蜂窝景点页面下蜂蜂点评区域用户评论内容的时候,也详细介绍过,但之前我在所有爬虫相关的文章中介绍的内容,都离不开这样的一个过程:
整理url规则(静态页面直接访问,JS控制的动态页面通过浏览器的开发者工具来找到真实网址和参数)
|
伪装浏览器
|
利用urllib.urlopen()或requests.get()对目标url发起访问
|
获得返回的网页原始内容
|
利用BeautifulSoup或PySpider对网页原始内容进行解析
|
结合观察到的CSS标签属性等信息,利用BeautifulSoup对象的findAll()方法提取需要的内容,利用正则表达式来完成精确提取
|
存入数据库
而本文将要介绍的一种新的网络数据采集工具就不再是伪装成浏览器端,而是基于自动化测试工具selenium来结合对应浏览器的驱动程序,开辟真实的、显性的浏览器窗口,来完成一系列动作,以应对更加动态灵活的网页;
二、selenium
2.1 介绍
selenium也是一个用于Web应用程序测试的工具。selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE、Mozilla Firefox、Mozilla Suite、Chrome等。这个工具的主要功能是测试与浏览器的兼容性,但由于其能够真实模拟浏览器,模拟网页点击、下拉、拖拽元素等行为的功能,使得其在网络数据采集上开辟出一片天地;
2.2 环境搭建
要想基于Python(这里我们说的是Python3,Python2,就让它在历史的长河里隐退吧。。。)来使用selenium创建爬虫程序,我们需要:
1.安装selenium包,直接pip安装即可
2.下载浏览器(废话-_-!),以及对应的驱动程序,本文选择使用的浏览器为Chrome,需要下载chromedriver.exe,这里提供一个收录所有版本chromedriver.exe资源的地址:
upload/201809081612218383.png" alt="" style="margin: 0px; padding: 0px; border: 0px; max-width: 720px; height: auto;" />
3.测试一下~
在完成上述操作之后,我们要检验一下我们的环境有没有正确搭建完成,在你的Python编辑器中,写下如下语句:
from selenium import webdriver '''创建一个新的Chrome浏览器窗体''' browser = webdriver.Chrome() '''在browser对应的浏览器中访问百度首页''' browser.get('http://www.baidu.com')
如果在执行上述语句之后,顺利地打开了Chrome浏览器并访问到我们设置的网页,则selenium+Chrome的开发环境配置完成;
2.3 利用selenium进行网络数据采集的基本流程
在本文的一开始我们总结了之前进行网络数据采集的基本流程,下面我们以类似的形式介绍一下selenium进行网络数据采集的基本流程:
创建浏览器(可能涉及对浏览器一些设置的预配置,如不需要采集图片时设置禁止加载图片以提升访问速度)

