利用java的net包来实在数据采集的功能

最近有好多朋友问我,数据抓取用java怎么做,就是每天把新浪的内地新闻频道的新闻前20条,抓到自己的网站或系统里,今天我统一在这里提供一个简单的例子,由于在这个过程中还需要解析html字符串,所以,我只教朋友们抓数据,至于怎么处理在本文不考虑。接下来看例子:

package net.xinhudong.html;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class htmlRequest {
    /**
    * @param args
    * @throws MalformedURLException 
    */
    public static void main(String[] args) throws Exception{
        URL url = new URL("http://roll.news.sina.com.cn/news/gnxw/gdxw1/index.shtml"); 
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();
        conn.setRequestMethod("GET");
        conn.setConnectTimeout(5 * 1000);
        InputStream inStream =  conn.getInputStream();//通过输入流获取html数据	
        byte[] data = readInputStream(inStream);//得到html的二进制数据
        String html = new String(data);
        System.out.println(html);//在控制台输入得到的html代码
    }
    public static byte[] readInputStream(InputStream instream) throws Exception{
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        byte[]  buffer = new byte[1204];
        int len = 0;
        while ((len = instream.read(buffer)) != -1) {
            outStream.write(buffer,0,len);
        }
        instream.close();
        return outStream.toByteArray();    
    }
}            

运行这个程序后,可以在控制台看到上面网址中的页面源代码,在源代码中可以找到<!-- 列表 begin -->和<!-- 列表 end -->的注释标签,我们利用这些注释标签来对html进行截取,然后从中获得到<li>,把<li>中的内容一条一条的放在一个List中,然后保存这个List到数据库就完成了数据采集的功能。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据结构与算法

P1816 忠诚

题目描述 老管家是一个聪明能干的人。他为财主工作了整整10年,财主为了让自已账目更加清楚。要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意。但...

27550
来自专栏携程技术中心

干货 | 基于红黑树的高效IP归属地查询方案

作者简介 邢钦华,携程风控团队高级研发经理。2016年加入携程,是风控大数据平台Chloro的设计和开发的主要参与者。专注于大数据流式处理和用户行为分析在互联网...

56490
来自专栏battcn

一起学设计模式 - 中介者模式

在我们的生活中处处充斥着中介者,比如租房、买房、出国留学、找工作、旅游等等可能都需要那些中介者的帮助,同时我们也深受其害,高昂的中介费,虚假信息。 在地球上最大...

10620
来自专栏我的技术专栏

C++ 自由存储区是否等价于堆?

36650
来自专栏FreeBuf

逆向APK进行smali注入实现“秒破WIFI”

近期开始关注手机安全了,以往都是在PC上玩,对这个领域也想了解一下,可是拿什么来开刀呢?突然想起Wifi万能钥匙这个神器了,这个软件的wifi分享模式鄙人非常喜...

27160
来自专栏诸葛青云的专栏

手把手教你用c语言编写网络病毒

恶意软件可能是第一个对我们产生影响的计算机安全问题.所以病毒在信息安全中是很重要的.

48720
来自专栏WindCoder

手机号验证

15010
来自专栏dotnet & java

WCF入门 (14)

做了一份面试题,最后一题是数据库的,写个查询。要查出Score有两次及两次以上超过79的Name和他的最高得分,同时显示超过79分的次数。

9720
来自专栏Linyb极客之路

并发编程之Exchanger

一、简介 Exchanger(交换者)是一个用于线程间协作的工具类。Exchanger用于进行线程间的数据交换。它提供一个同步点,在这个同步点两个线程可以交换...

38760
来自专栏数据结构与算法

BZOJ1060: [ZJOI2007]时态同步(树形dp 贪心)

Description   小Q在电子工艺实习课上学习焊接电路板。一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数 字1,2,3….进行标号。电路板的...

30160

扫码关注云+社区

领取腾讯云代金券