前面讲了不少爬虫实例,也用了scrapy框架进行爬取,然后可能有些人急不可待的想要自己试试多爬几个网站了,结果就会发现许多的网站爬取不了,仔细检查代码也没写错啊但就是得不到数据,这是因为我之前所爬的网站获取的数据都是静态网页数据,对于那种动态数据是得不到的,而当下又有许多网站用的是动态数据,所以我们该如何得到这些动态数据呢?这里我们使用PhantomJS工具配合scrapy框架进行爬虫开发。
PhantomJS是一种基于webkit内核的无头浏览器,它没有UI界面,它就是一个浏览器,只是其内的点击、翻页等人为相关操作需要程序设计实现。PhantomJS提供javascript API接口,即通过编写js程序可以直接与webkit内核交互,在此之上可以结合java语言等,通过java调用js等相关操作,从而解决了以前c/c++才能比较好的基于webkit开发优质采集器的限制。
首先我们百度搜索PhantomJS,在下载界面找到这个下载链接
先下载下来解压会有这样一个文件夹phantomjs-2.1.1-windows
把解压的文件夹放好位置,这里推荐放在python开发工具一个目录下,好找
然后根据这个路径phantomjs-2.1.1-windows\bin找到一个幽灵图标
在电脑的环境变量的path后面跟上一句 ;幽灵图标的绝对路径
我这里是;D:\Python\phantomjs-2.1.1-windows\bin
这样在pyCharm中使用
driver=webdriver.PhantomJS(executable_path=r'D:/Python/phantomjs-2.1.1-windows/bin/phantomjs.exe')
这样一句代码,就可以爬取动态数据了。
注意 PhantomJS是和Selenium一起使用的,所以前面必须要引入浏览器驱动
代码如下
from selenium import webdriver