关于html爬取数据的文章已经有很多了,我今天主要和大家交流的是如何爬取flash网页的数据。这方面资料相对比较少,主要是html5兴起后现在flash站很少了,不过用于技术研究还是可以尝试一下,这篇文章就主要介绍我爬取数据的整个过程。
以房产透明网为例,该网站的一房一价数据就是通过flash显示,接下来将一步步介绍如何获取对应的数据。
特别声明,本文章仅做相关技术学习交流,数据版权为成都透明网,个人或企业请勿用于商业或非法用途,如该文章有不妥之处请联系本人删除。
我找了一个楼盘用浏览器自带的工具查看,可以看到返回的数据是乱码,如下图。
这个主要是返回的数据格式是application/x-amf,浏览器无法正常解析,接下来就需要用的抓包工具Charles了,这个工具没给钱的话30分钟会关闭,我觉得30分钟也够用了,目前一直忍受着。
1.首先打开Charles
2.打开透明网一房一价页面,点击一个单元后就可以看到请求的数据了
这里面比较重要的几个部分我都截取了一下,最后HOUSEITEMLIST,就我们需要处理的数据了。
3.可以看到通过抓包工具已经可以看到请求的数据了,接下来就需要用java模拟amf的请求。
org.apache.flex.blazeds
flex-messaging-core
4.7.2
org.apache.flex.blazeds
flex-messaging-common
4.7.2
先要引入这两个包,这个请求代码如下,部分参数我设置为******,如果需要测试自行粘贴对应的参数。
public static void main(String[] args) {
try {
URL urlObject = new URL("http://cd.funi.com/messagebroker/amf");
HttpURLConnection urlConnection = (HttpURLConnection) urlObject.openConnection();
urlConnection.setDoOutput(true);
urlConnection.setRequestProperty("Content-type", "application/x-amf;charset=gb2312"