动态网页数据爬取

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

动态网站的抓取静态网站困难一些,主要涉及ajax和html,传统的web应用,我们提交一个表单给服务器接受请求返回一个页面给浏览器,这样每次用户的交互都需要向服务器发送请求。同时对整个网页进行刷新,这样会浪费网络宽带影响用户体验。

怎么解决?

Ajax--异步JavaScript和xml。是JavaScript异步加载技术、xml及dom还有xhtml和css等技术的组合。他不必刷新整个页面只需要页面的局部进行更新。Ajax只取回一些必要数据,使用soap、xml或者支持json的web service接口。这样提高服务器的响应减少了数据交互提高了访问速度。

Dhtml动态html,他只是html、css、和客户的的一宗集合,一个页面有html、css、JavaScript 制作事事变换页面的元素效果的网页设计。

如何分辨?

最简单的就是看有没有“查看更多”字样,也可以使用response访问网页返回的response 内容和浏览器的内容不一致时就是使用了动态技术。这样我们也无法提取有效数据

如何提取?

1直接在JavaScript中采集的数据分析

2使用采集器中加载好的数据

为什么使用Phantomjs?

Ajax请求太多并加密,手动分析每个ajax请求无疑愚公移山,phantomjs直接提取浏览器渲染好的结果不进行ajax请求分析,其实phantomjs就是基于webkit 的服务端JavaScript api。支持web而无需浏览器支持运行快,支持各种web标准:dom、css、json、canvas、svg。常用于页面自动化、网络监测、网页截屏、无界面测试。

安装?

下载/download.html解压设置环境变量phantomjs -v测试安装

下载:{l55l59〇6〇9〇}

使用

页面加载:分析创建网页对象的呈现

代码:使用webpage模块创建一个page对象,通过page对象打开url网址,如果状态为success 通过render方法将页面保存。

代码评估:利用evaluate执行沙盒它执行网页外的JavaScript代码,evaluate返回一个对象然后返回值仅限对象不包含函数

屏幕捕获:

网络监控:

页面自动化:

常用模块和方法?

Phantom,webpage,system,fs

图形化?

Selenium将Python和phantomjs紧密结合实现爬虫开发。Selenium是自动化测试工具,支持各种浏览器,就是浏览器驱动可以对浏览器进行控制。并且支持多种开发语言phantomjs 负责解析JavaScript,selenium负责驱动浏览器和Python对接。

安装

pip install selenium===3.0.1 或者https:///pypi/selenium#downloads 下载源码解压python setup.py install selenium3然后下载https:///SeleniumHQ/selenium/

浏览器补丁解压到指定目录,将geckodriver所在目录配置到环境变量。

相关文档
最新文档