JsvaScript
JsvaScript 是网络上最常用也是支持者最多的客户端脚本语言,它可以收集用户的跟踪数据,不需要重载页面直接提交表单,在页面嵌入多媒体文件,甚至运行网页游戏;
jQuery
jQuery 是一个十分常见的库,70%最流行的网站和30%的其他网站都在使用,一个网站使用jQuery的特征,源代码里包含了jQuery入口:
如果在网站上遇到jQuery,那么采集这个网站数据的时候需注意。jQuery可以动态地采集HTML内容,只有在javaScript代码执行之后才会显示,如果你用传统的方法采集页面内容,则只能获得javaScript代码执行之前页面上的内容;
Ajax
与网站服务器通信的唯一方式,就是发出HTTP请求获取新页面。如果提交表单之后,或从服务器获取信息之后,网站的页面不需要重新刷新,那么你访问的网站就是用Ajax技术;
Ajax并非语言,而是用来完成网络内容的一系列技术。网站不需要使用单独的页面请求就可以和网络服务器进行交互。
DHTML
Ajax 一样,动态HTML也是一系列用于解决网络问题的技术集合。DTHML是用客户端语言改变页面的HTML元素(HTML、CSS,或者二者 被改变)。比如页面上的按钮只有当用户移动鼠标之后才出现,背景色可能每次点都会改变,或者用一个Ajax 请求触发页面加载一段新内容,网页是否属于DHTML,关键要看有没有用JavaScript 控制HTML 和 CSS元素。
动态HTML推荐使用第三方库: Selenium & PhantomJS
Selenium
Selenium:美 [sɪˈliniəm] 硒
Selenium 是一个 Web 的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是 Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括 PhantomJS 这些无界面的浏览器)。
Selenium 可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生。
Selenium 自己不带浏览器,不支持浏览器的功能,需要第三方浏览器结合使用。可用PhantomJS的工具代替真是的浏览器。
可以从 PyPI 网站下载 Selenium https://pypi.python.org/simple/selenium ,也可以用第三方管理器 pip 用命令安装:pip install selenium==2.48.0
PhantomJS
PhantomJS 是一个基于 Webkit 的“无界面”(headless)浏览器,它会把网站加载到内存并执行页面上的 JavaScript,因为不会展示图形界面,所以运行起来比完整的浏览器要高效。
如果我们把 Selenium 和 PhantomJS 结合在一起,就可以运行一个非常强大的网络爬虫了,这个爬虫可以处理 JavaScrip、Cookie、headers,以及任何我们真实用户需要做的事情。
注意:PhantomJS 只能从它的官方网站 http://phantomjs.org/download.html) 下载。 因为PhantomJS 是一个功能完善(虽然无界面)的浏览器而非一个 Python 库,所以它不需要像 Python 的其他库一样安装,但我们可以通过 Selenium 调用 PhantomJS 来直接使用。