java爬取动态加载/js返回数据的网页的源代码

在作人人网页的爬虫时,爬取人人新鲜事搜索页面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=后面的数字后爬取的内容居然都同样,每次都是第一页。在不一样的页数右键“查看页面源代码”发现确实都是第一页的新鲜事内容,没有变化。java

而后火狐右键“查看元素”,发如今每次翻页时,只有新鲜事部分的HTML标签变化了(闪现橙色),估计是用了JAVASCRIPT动态更新/加载数据,而不是从新请求了一个新的网址连接浏览器

知道了问题所在后,开始百度,找到了这样一篇神文章: Java抓取网页数据(原网页+Javascript返回数据)
网络

有时候网站为了保护本身的数据,并无把数据直接放在网页源码中返回,而是采用异步的方式,用JS返回数据,这样能够避免搜索引擎等工具对网站数据的抓取。
异步

按照博文的方法,一步一步,使用火狐查看元素里的“网络”进行分析,发现果不其然,在换页的时候,是异步采用js返回了数据,请求的真正的连接天然也和浏览器中所看到的不同。以下图:工具


查看响应的内容:网站



果真!就是想要找的内容!总共10条新鲜事,一条不差 并且正是咱们想要的页码的搜索引擎

以后只要把原来爬取HTML网页的java爬虫代码的url改为这个真正的请求地址就行了(而不是在浏览器地址栏明眼看到的),其余的都不用变
url

相关文章
相关标签/搜索