一次性付费进群,长期免费索取教程,没有付费教程。
进微信群回复公众号:微信群;QQ群:460500587
微信公众号:计算机与网络安全
ID:Computer-network
Python网络爬虫中最麻烦的不是那些需要登录才能获取数据的网站,而是那些通过JavaScript获取数据的站点。Python对JavaScript的支持不太好。想用Python获取网站中JavaScript返回的数据,唯一的方法就是模拟浏览器了。这个模拟浏览器跟Mechanize模块稍有不同,Mechanize模块并不支持JavaScript,所以这里需要一款可以模拟真实浏览器的模块——Selenium模块。
1、安装Selenium模块
Selenium是一套完整的Web应用程序测试系统,包含了测试的录制(Selenium IDE)、编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可运行于任何支持JavaScript的浏览器上。
(1)Windows下安装Selenium模块
在Windows中安装Selenium必须使用管理员权限。
在Windows中安装Selenium模块可以采用最简单的pip安装,执行命令:
python -m pip install -U selenium
执行结果如图1所示。
图1 Windows安装Selenium
Windows中安装Selenium完毕,可以直接使用了。
(2)Linux下安装Selenium模块
在Linux中安装软件尽可能地使用apt-get,这样便于管理软件。执行命令:
apt-get install python3-selenium
执行结果如图2所示。
图2 Linux安装Selenium
Linux中安装Selenium完毕。
2、浏览器选择
在编写Python网络爬虫时,主要用到Selenium的Webdriver。Selenium.Webdrive不可能支持所有的浏览器,也没必要支持所有的浏览器。实际上目前流行的浏览器核心也就是那么几种。先看看Selenium.Webdriver支持哪几种浏览器。
(1)Webdriver支持列表
查看模块的功能,最简单也是最方便的方法就是直接使用help命令。打开cmd.exe工具,执行命令:
python
from selenium import webdriver
help(webdriver)
执行结果如图3所示。
图3 Webdriver支持列表
在以上列表中,android和blackberry是移动端的浏览器,可以先去掉。移动端的浏览器虽然也支持JavaScript,但与PC端的浏览器根本是两回事。common和support也可以先去掉,剩下的只有Chrome、Edge、Firefox、IE、Opera、Phantomjs和Safari了。Chrome、Dege、Firefox、IE、Opera、Safari比较常见,而PhantomJS则有些名不见经传。
PhantomJS是一个基于WebKit的服务器端JavaScript API。它全面支持Web而不需浏览器支持,其快速、原生支持各种Web标准:DOM处理、CSS选择器、JSON、Canvas和SVG。PhantomJS可以用于页面自动化、网络监测、网页截屏以及无界面测试等。
无界面意味着开销小,也意味着速度快。网上有牛人测试过,使用Selenium调用上面的浏览器,速度前三分别是PhantomJS、Chrome和IE(remote调用HtmlUnit速度才是最快的,但HtmlUnit对JavaScript的支持不太好),开销小、速度快对JavaScript的支持也不错。唯一的缺点是没有GUI,但在服务器下运行程序时,这又成了优点。所以无须犹豫,就选PhantomJS了。事实上,在爬行JavaScript才能返回数据的网站时,没有比Selenium和PhantomJS更适合的组合了。
(2)Windows下安装PhantomJS
PhantomJS的官网主页是http://phantomjs.org/。在浏览器中打开主页,单击Download V2.1按钮进入下载页面,如图4所示。
图4 PhantomJS官网主页
进入下载页面后,选择Windows版本的PhantomJS下载软件,如图5所示。
图5 下载Windows版本PhantomJS
因为未知的原因,直接用浏览器下载PhantomJS速度极慢。有时根本就没反应,建议使用迅雷下载PhantomJS。迅雷上若有用户曾下载过PhantomJS,后面的迅雷用户再次下载速度就很快了。
下载完成后,解压压缩包,然后将exe文件加入系统路径中就可以了。安装程序已自动将Python的路径加入到系统路径中了,反正PhantomJS也是配合Python使用的,直接将解压后的PhtomJS.exe复制到Python的目录中就可以了,如图6所示。
图6 Windows设置PhantomJS环境
在Python环境中测试一下,如图7所示。
图7 Windows中测试PhantomJS环境
Windows下的PhantomJS环境已配置好,可以直接使用了。
(3)Linux下安装PhantomJS
还是打开PhantomJS官网的下载页面,选择合适的版本,使用迅雷下载,如图8所示。
图8 下载Linux版本PhantomJS
将下载好的压缩文件上传到Linux后解压缩,然后将可执行文件复制到系统路径/usr/local/bin文件夹下(Linux的系统路径有很多,随意选一个即可)。打开Putty,连接到Linux上,执行命令:
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/
ln -s phantomjs-2.1.1-linux-x86_64/bin/phantomjs/usr/local/bin/phantomjs
ls -l /usr/local/bin/
执行结果如图9所示。
图9 Linux中设置PhantomJS环境
在Python环境中测试一下,执行命令:
python3
from selenium import webdriver
derver=webdriver.PhantomJS()
执行结果如图10所示。
图10 Linux中测试PhantomJS环境
Linux下的PhantomJS环境已配置好,可以直接使用了。
微信公众号:计算机与网络安全
ID:Computer-network
【推荐书籍】