网页动态请求分析

最近想去q空间找点数据来分析,大概摸索了一下,做了个记录。

首先什么是动态渲染的网页。网页大体分两种:

  • 一种就是静态的:就是直接请求到一个含有有效内容的HTML,经浏览器解析直接得到网页中的有效数据。
  • 另一种就是动态渲染的:所谓动态及就是主HTML和有效数据是分离的,当网页打开的时候,动态的去服务器上请求所需的数据,通过js渲染,在网页上呈现有效数据。

对于动态请求渲染的网页,也有两种处理方法。

  • 1.可以在程序中内置一个浏览器内核,通过模拟js渲染之后再来扒取,典型的如:selenium。所对应的问题就是效率稍低,而且和操作系统的平台版本有关,不太好统一的处理程序。
  • 2.分析网页请求,找出关键数据所对应的请求,然后进行解析抓取。

这里介绍第二种:
首先分析请求,打开网页,打开浏览器的开发者工具,将选项卡切换到Network,然后就可以看到网页加载时所发出的请求了。
在大多数情况下,第一眼看到请求肯定会有点懵,请求实在太多了,但这也是最难的一步,必须在这么多请求中找到关键数据所对应的那条请求。可以通过将该条请求当作URL访问来判断是否为所需的请求。(如果是chromium内核的浏览器可以装个jsonviewer插件,非常方便查看AJAX的结果。)

这里有稍微有一点辅助手段:
1.通过Network选项卡下面的标签来过滤,如XHR,js,CSS,img等,一般XHR和js是常见的请求所在标签。
2.有部分请求是可以不用查看直接过滤的,比如jquery之类的命名明显的请求。
3.眼疾手快,打开开发者工具,刷新一遍网页,同时注意请求列表与网页内容的变化,在关键内容所出现的那一瞬间对应产生的请求很可能就是你所需要的。

自己分析了一下空间的请求,发现是有一个feed的:

这个feed不仅包括自己的动态,还含有好友的互动评论:

对URL进行分析,得到了四个关键参数:

uin:访问者的ID
hostuin:访问对象的ID
start:内容起始位置
count:单次返回的内容数量

如此便获得了自己所需要的请求了,之后可以如编写静态爬虫过程了,只不过返回数据不同于HTML代码,对结果处理手段不一样。

除特别注明外,本站所有文章均为橘子洲头原创,转载请注明出处来自http://papu.pub/2017/03/17/wydtqqfx/

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Protected with IP Blacklist CloudIP Blacklist Cloud