转载请注明出处。

有时候因为种种原因。我们须要採集某个站点的数据。但因为不同站点对数据的显示方式略有不同!

本文就用Java给大家演示怎样抓取站点的数据:(1)抓取原网页数据。(2)抓取网页Javascript返回的数据。

一、抓取原网页。

这个样例我们准备从http://ip.chinaz.com上抓取ip查询的结果:

第一步:打开这个网页。然后输入IP:111.142.55.73,点击查询button。就能够看到网页显示的结果:

第二步:查看网页源代码,我们看到源代码中有这么一段:

从这里能够看出。查询的结果,是又一次请求一个网页之后显示的。

再看看查询之后的网页地址:

也就是说,我们仅仅要訪问形如这种网址。就能够得到ip查询的结果,接下来看代码:

public void captureHtml(String ip) throws Exception {

String strURL = "http://ip.chinaz.com/?

IP=" + ip;

URL url = new URL(strURL);

HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();

InputStreamReader input = new InputStreamReader(httpConn

.getInputStream(), "utf-8");

BufferedReader bufReader = new BufferedReader(input);

String line = "";

StringBuilder contentBuf = new StringBuilder();

while ((line = bufReader.readLine()) != null) {

contentBuf.append(line);

}

String buf = contentBuf.toString();

int beginIx = buf.indexOf("查询结果[");

int endIx = buf.indexOf("上面四项依次显示的是");

String result = buf.substring(beginIx, endIx);

System.out.println("captureHtml()的结果:\n" + result);

}使用HttpURLConnection连接站点。用bufReader保存网页返回的数据,然后通过自己定义的一个解析方式将结果显示出来。

这里我仅仅是随便的解析了一下,要解析的很准确的话自己需再处理。

解析结果例如以下:

captureHtml()的结果:

查询结果[1]: 111.142.55.73 ==>> 1871591241 ==>> 福建省漳州市 移动

二、抓取网页JavaScript返回的结果。

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

首先看一下这个网页:

用第一种方式查看该网页的源代码,却没有发现该运单的跟踪信息,由于它是通过JS的方式获取结果的。

但有时候我们非常须要获取到JS的数据,这个时候要怎么办呢?

这个时候我们须要用到一个工具:HTTP Analyzer,这个工具能够截获Http的交互内容,我们通过这个工具来达到我们的目的。

首先点击Startbutton之后,它就開始监听网页的交互行为了。

我们打开网页:http://www.kiees.cn/sf.php ,能够看到HTTP Analyzer列出了全部该网页的请求数据以及结果:

为了更方便的查看JS的结果,我们先清空这些数据,然后再网页中输入快递单号:107818590577。点击查询button,然后查看HTTP Analyzer的结果:

这个就是点击查询button之后,HTTP Analyzer的结果,我们继续查看:

从上面两幅图中能够看出。HTTP Analyzer能够截获JS返回的数据,并在Response Content中显示,同一时候能够看到JS请求的网页地址。

既然如此。我们仅仅要分析HTTP Analyzer的结果,然后模拟JS的行为就可获取到数据,即我们仅仅要訪问JS请求的网页地址来获取数据。当然前提是这些数据是没有经过加密的。我们记下JS请求的URL:http://www.kiees.cn/sf.php?wen=107818590577&channel=&rnd=0

然后让程序去请求这个网页的结果就可以!

以下是代码:

public void captureJavascript(String postid) throws Exception {

String strURL = "http://www.kiees.cn/sf.php?

wen=" + postid

+ "&channel=&rnd=0";

URL url = new URL(strURL);

HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();

InputStreamReader input = new InputStreamReader(httpConn

.getInputStream(), "utf-8");

BufferedReader bufReader = new BufferedReader(input);

String line = "";

StringBuilder contentBuf = new StringBuilder();

while ((line = bufReader.readLine()) != null) {

contentBuf.append(line);

}

System.out.println("captureJavascript()的结果:\n" + contentBuf.toString());

}看到了吧。抓取JS的方式和前面抓取原网页的代码一模一样。我们仅仅只是做了一个分析JS的过程。

以下是程序运行的结果:

captureJavascript()的结果:

运单【107818590577】的跟踪信息

  • class="time">2012-07-16 15:46:00

    已收件

  • 2012-07-16 16:03:00快件在 广州\t,准备送往下一站广州集散中心
  • 2012-07-16 19:33:00快件在 广州集散中心,准备送往下一站佛山集散中心
  • 2012-07-17 01:56:00快件在 佛山集散中心\t,准备送往下一站佛山
  • 2012-07-17 09:41:00正在派件..
  • 2012-07-17 11:28:00

    class="info">派件已签收

  • 2012-07-17 11:28:00签收人是:已签收

这些数据就是JS返回的结果了,我们的目的达到了!

我希望这能成为一个小朋友需要帮助,需要程序的源代码,点击这里下载!

java取网页数据_Java抓取网页数据(原来的页面+Javascript返回数据)相关推荐

  1. java股票数据_java抓取东方财富股票数据(附源码)

    背景 前段时间给朋友写了一个自动抓取同花顺股票数据的程序,不少人觉得不错. 这几天后台有粉丝给我留言让我也抓一下东方财富的数据,说东方财富的数据特别难抓,我还真不一定能搞得定. 本来我是一个德艺双磬且 ...

  2. java 抓取网页乱码_java抓取网页乱码问题的处理

    今天同事做了一个我们感觉很牛B的彩票预测程序,采用的是遗传算法实现,于是我"剽"来学习先,但是部署到我电脑上以后,就有问题了: 1.用她的抓取程序得到的网页内容出现乱码,导致数据无 ...

  3. java取邮箱前缀_java抓取网页或文件中的邮箱号码

    java抓取网页或文件中的邮箱号码 发布时间:2020-10-18 08:58:32 来源:脚本之家 阅读:69 作者:java大渣渣 本文实例为大家分享了java抓取邮箱号码的具体代码,供大家参考, ...

  4. java保存火车票信息_java抓取12306火车余票信息

    最近在弄一个微信的公众帐号,涉及到火车票查询,之前用的网上找到的一个接口,但只能查到火车时刻表,12306又没有提供专门的查票的接口.今天突然想起自己直接去12306上查询,抓取查询返回的数据包,这样 ...

  5. java抓取网页代码_java 抓取网页内容实现代码

    复制代码 代码如下: package test; import java.io.BufferedReader; import java.io.IOException; import java.io.I ...

  6. java获取货币汇率_JAVA抓取中国外汇交易中心各币别对RMB汇率

    因为中国外汇交易中心使用的数据格式为json,JAVA提供了专门解析json的lib,我们首先要引入该lib(解析json的依赖包有几个,csdn有提供所有lib的压缩包,我用的是json-lib-2 ...

  7. Java抓取网页数据(原网页+Javascript返回数据)

    转载请注明出处! 原文链接:http://blog.csdn.net/zgyulongfei/article/details/7909006 有时候因为种种原因,我们须要採集某个站点的数据,但因为不同 ...

  8. 网页数据抓取 java_Java抓取网页数据(原网页+Javascript返回数据)

    转载请注明出处! 有时候因为种种原因,我们须要採集某个站点的数据,但因为不同站点对数据的显示方式略有不同! 本文就用Java给大家演示怎样抓取站点的数据:(1)抓取原网页数据:(2)抓取网页Javas ...

  9. ajax获取网页新闻,基于Ajax的新闻网页动态数据的抓取方法及系统

    主权项: 1.基于Ajax的新闻网页动态数据的抓取方法,其特征是,包括如下步骤:步骤(101):建立新闻网页爬取内容数据库,设置新闻网页爬取内容数据库的编码方式:获得待抓取新闻网页的新闻列表页面的UR ...

最新文章

  1. 转载模板声明中template typename T和template class T
  2. hibernate 延迟加载(转载)
  3. 全球IPv4地址正式耗尽,你知道吗?
  4. 写博客和生产api的工具
  5. Pwn2Own 2020 曝出的Linux 内核漏洞已修复
  6. uwp之拍照(使用后置摄像头)
  7. 使用Redis进行简单的数据缓存
  8. Smart210使用superboot刷机
  9. win7怎么修改系统语言
  10. 人民币和美元兑换的编程python_python人民币和美元转换
  11. 各种压缩格式介绍!(摘录2)
  12. Android 关于IPV6 DNS的问题
  13. 关于c语言中数据的存储
  14. html锚点链接怎么互点,通过优化网页核心关键词快速提升排名
  15. 微信和 QQ 终于可以互通了
  16. judgement_mna_2016(32位fmt)
  17. 五步实现“中国制造”精益物流系统
  18. cocos2dx-2.1.5-孤狼优化版
  19. 4月11日Win10创意者更新来袭:微软股价创新高
  20. 中国程序员阶层——一股待觉醒的力量

热门文章

  1. 政府采购数据-含金额、采购方式、合同信息等(2003-2021年10月)
  2. [转自ubuntu论坛]如何使用圆体来美化,支持中文粗体和斜体?
  3. 卖软件,还是卖服务?
  4. fifa18 服务器维护,fifa18链接服务器
  5. php+Vue单页面学生管理系统
  6. Mysql-创建数据库和数据表时指定编码格式
  7. ArcGIS 矢量切片服务随记
  8. AgentTesla变种分析
  9. matlab保存图片程序,Matlab中图片保存的四种方法
  10. 综合设计——基于STC15W4K32S4(第三部分)