本篇文章主要分析当下常见的几种翻页(加载数据)的方式,并结合实际例子和截图介绍。在后续博客中针对这些网站,写代码完成数据抓取。
1. 根据页码进行翻页
如CSDN的个人博客列表,我们可以轻松的分析出总页数和列表页地址。
共两页,列表页地址为:http://blog.csdn.net/TMaskBoy/article/list/2
对于此类型的网页,我们只需要根据总页数,遍历所有的列表页即可,对于一些数据量极大,页数有最大值限制时,需要根据分类或者检索条件解决。
2. 根据下拉网页进行加载数据
上一篇博客写的开源中国新闻列表,其加载数据方式即为下拉刷新。 此类型的网页我们可以打开浏览器的开发者工具,点击网络(Network),首先清空原有的请求,拖动网页的滚动条到底部,可看到网页新发出的Url请求,一般都会有页数等相关参数。
此处我们可以看出,返回的数据和上一篇博客循环解析的节点一致。
此种翻页我们需要不断的递增翻页请求中的当前页码参数,对于有些网页,在请求到一定页之后会不在返回数据,一般需要根据分类或查询条件等不断精确范围,保证抓取到更多的数据。
3. Ajax无刷新请求
Iconfont 阿里巴巴矢量图库的翻页即为Ajax无刷新请求,此类型翻页请求类型一般为Post,参数包括查询参数,当前页数,每页条目数等等,返回数据为Json。
下图为请求参数:
此类型的翻页不需要进行html的解析,但需要对返回的Json数据做解析,可使用FastJson等工具将Json数据转化为Map字典或者对应的实体对象,进而获取各个键或者属性,达到获取数据的目的。翻页请求和上述相同。
接下来的博客针对上述三种加载数据的方式编写实际的代码抓取数据。