admin管理员组

文章数量:1547229

0x00 前言

如果读者读过我前面的关于爬虫的文章,应该大概都清楚我们现在可以对一个静态的web页面”为所欲为“了,但是技术的发展总是没有止境的,仅仅是这样对静态页面处理远远不够,要知道现在很多的web页面有意无意为了防止静态爬虫使用ajax技术动态加载页面,这就导致了在面对这些网站的时候,我们前面的技术并不能起到什么很好的效果,所以,我在本系列文章开头就说了会提供动态加载网页的解决方案,在这篇文章里,笔者就在这里提出这个解决方案,用来解决以前我们没有办法的问题。

0x01 动态页面解决方案Selenium+PhantomJS

Python2(或Python3)      本文使用Python2.7.11

Selenium                            自动化web测试解决方案

PhantomJS                         一个没有图形界面的浏览器

0x02 原理回顾对比

讨论:讲selenium自动化测试技术应用于爬虫数据挖掘,其实我也是经历了一段时间的思考,有一些基础的朋友们可能会知道,BeautifulSoup这种完全基于静态的web页面分析是没有办法执行JS的,但是我们在使用web的过程中,基本不可能不用到JS脚本,当时我就想寻找一个JS引擎整合BeautifulSoup,然后计划使用Spidermonkey这个技术,如果需要这么做的话,我们会发现,我们不仅要用BeautifulSoup爬取页面的目标元素,而且还要考虑爬取JS脚本,在执行这些js脚本后,我们还需要再次分析这些脚本返回的数据或者是对HTML页面产生的影响,我觉得这样加大了太多的不确定因素,我们不想花太多的时间放在脚本编写上,既然选用Python,就要发挥它的巨大Pythonic的优势。然后还有一个解决方案就是 Ghost.py,github主页。我想也许我们通过这个方案介绍的不仅仅是爬虫,也可能是一个新世界的大门,所以我还是选择selenium吧,web自动化测试的一整套解决方案。

其实我们从BeautifulSoup的解决方案过度到selenium的方案就是一个思维上的“退步“的过程,从直接HTML解析->分析JS->webkit->索性直接用headless浏览器来操作web页面的selenium。

所以也就是说,我们接下来要讨论的selenium用于爬虫和以前学习的静态页面处理有着本质的区别,可以认为对我们来说是一个全新的技术。

0x03 Quick Start

在这里我们首先可以很负责任的说,通过以下的例子并不会让读者完全掌握selenium的使用,但是通过动手,大家可以了解到selenium是非常好用并且并不输于BeautifulSoup的(也许这两个并不是一个级别并不能比较)。但是可以说BeautifulSoup中的定位元素,在selenium中都可以做到,而且Selenium可以设置等待时间让页面完成加载,或者设置条件让web页面加载出我们所需要的数据然后再获取数据。

下载与安装:

首先我们需要下载要给PhantomJS浏览器from

本文标签: 爬虫加载解决方案页面动态