基于Socket的萌新基础版—爬取网页url

      最近想玩一玩数据处理和分析方面的东西,于是就想着先从爬虫入手,此教程应该是最简单的爬虫,简单爬取网页的url链接,此处以中国新闻网滚动网页为例,爬取其新闻的类型,地址,名称,和时间。因为不涉及其他的东西,所有这个demo应该是比较简单的。

  1. 传入待爬取数据的网页的url
  2. 建立输入流InputStream
  3. 读取并处理数据。此步骤需要你自己去发掘你想要的数据的特征

    给出一条包含我们所需要的完整的一行数据:

<li><div class="dd_lm">[<a href=//www.chinanews.com/cj/gd.shtml>财经</a>]</div> <div class="dd_bt"><a href="//www.chinanews.com/cj/2020/08-06/9258286.shtml">粤启动为期2个月的全省夜经济促消费活动</a></div><div class="dd_time">8-6 21:15</div></li>

public class SpiderTest {
    public static void main(String[] args) throws IOException {
        //爬取整个网页
        URL url = new URL("http://www.chinanews.com/scroll-news/news1.html");//爬取新闻网新闻
        InputStream inputStream = url.openStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, "utf-8"));
        String line=br.readLine();
        while (line!=null) {
            if(line.length()!=0){
                //删选出包含类型标签和新闻地址的行
                if(line.contains("dd_lm")&&line.contains("dd_bt")){
                    StringBuilder sb=new StringBuilder(line);
                    //筛选出新闻类型
                    int style_end=sb.indexOf("</a>");//新闻类型的结束标志
                    String style=sb.substring(style_end-2,style_end);//由网页分析,类型均为两个字
                    //筛选出新闻地址和标题
                    int url_start=sb.indexOf("dd_bt");//新闻地址和标题的开始和结束标志
                    int url_end=sb.indexOf("dd_time");
                    String adress=(sb.substring(url_start+18,url_end-22)).replace("\">"," 
   新闻标题:");//获取新闻地址和新闻名
                    //筛选出时间
                    int time_start=sb.indexOf("dd_time");
                    String time=sb.substring(time_start+9,line.indexOf("</div></li>"));
                    //整合一条数据
                    System.out.println("新闻时间:"+time+"    新闻类型:"+style+"    新闻地址:"+adress);
                }
                line=br.readLine();
            }
            else line=br.readLine();
        }
        br.close();
    }
}

爬取结果:

    

    在这个demo里面,不包含对爬取到的内容进行保存处理,若想进行此操作,可开启一个输出流OutputStream,将经过处理的每一行数据写入到一个文件里面。可参考之前的博客读取文件内容到另一个文件小demo

    不足之处还请批评指正,一起学习,一起进步,万分感谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值