java爬取动态加载/js返回数据的网页的源代码
2016-03-25 00:00
357 查看
在做人人网页的爬虫时,爬取人人新鲜事搜索页面http://browse.renren.com/s/all?from=homeindex&q=%E6%97%A0%E8%81%8A&itab=11#qt=%E6%97%A0%E8%81%8A/tindex=11/curpage=4的源码时,改变curpage=后面的数字后爬取的内容竟然都一样,每次都是第一页。在不同的页数右键“查看页面源代码”发现确实都是第一页的新鲜事内容,没有变化。
然后火狐右键“查看元素”,发现在每次翻页时,只有新鲜事部分的HTML标签变化了(闪现橙色),估计是用了JAVASCRIPT动态更新/加载数据,而不是重新请求了一个新的网址链接
知道了问题所在后,开始百度,找到了这样一篇神文章: Java抓取网页数据(原网页+Javascript返回数据)
有时候网站为了保护自己的数据,并没有把数据直接放在网页源码中返回,而是采用异步的方式,用JS返回数据,这样可以避免搜索引擎等工具对网站数据的抓取。
按照博文的方法,一步一步,使用火狐查看元素里的“网络”进行分析,发现果不其然,在换页的时候,是异步采用js返回了数据,请求的真正的链接自然也和浏览器中所看到的不一样。如下图:
查看响应的内容:
果然!就是想要找的内容!总共10条新鲜事,一条不差 而且正是我们想要的页码的
之后只要把原来爬取HTML网页的java爬虫代码的url改成这个真正的请求地址就好了(而不是在浏览器地址栏明眼看到的),其他的都不用变
然后火狐右键“查看元素”,发现在每次翻页时,只有新鲜事部分的HTML标签变化了(闪现橙色),估计是用了JAVASCRIPT动态更新/加载数据,而不是重新请求了一个新的网址链接
知道了问题所在后,开始百度,找到了这样一篇神文章: Java抓取网页数据(原网页+Javascript返回数据)
有时候网站为了保护自己的数据,并没有把数据直接放在网页源码中返回,而是采用异步的方式,用JS返回数据,这样可以避免搜索引擎等工具对网站数据的抓取。
按照博文的方法,一步一步,使用火狐查看元素里的“网络”进行分析,发现果不其然,在换页的时候,是异步采用js返回了数据,请求的真正的链接自然也和浏览器中所看到的不一样。如下图:
查看响应的内容:
果然!就是想要找的内容!总共10条新鲜事,一条不差 而且正是我们想要的页码的
之后只要把原来爬取HTML网页的java爬虫代码的url改成这个真正的请求地址就好了(而不是在浏览器地址栏明眼看到的),其他的都不用变
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树