JavaScript 是目前使用最广泛的客户端脚本语言,越来越多的站点通过 JavaScript 来实现页面动态加载。有统计显示,全球最受欢迎的站点中,有 70% 都使用了 jQuery,一个非常流行的用于DOM操作的JavaScript库。在抓取这类站点时,采用传统的,直接解析HTML页面的方式就行不通了。此时,你会发现通过Python获取到的页面内容,与在浏览器里看到的截然不同;另外,有时 JavaScript 加载页面会有页面重定向,而只有当重定向发生时,页面 URL 才会发生变化。网络爬虫就会抓取失败。So, Ajax or DHTML?
解决方案只有两个:
- 直接从 JavaScript 中抓取感兴趣的内容
- 在 Python 中执行相应的 JavaScript,在抓取内容
这里就需要用到两个非常强大的工具了:Selenium 和 PhantomJS。Selenium 本身不自带浏览器,所以在使用时会自动加载一个浏览器实例。而 PhantomJS 号称 “headless” browser,在加载页面并执行 JavaScript 时,并不会将页面渲染成图形展示出来。而在结合使用,堪称神器。
具体使用实例,且听下回分解。