网络爬虫学习笔记(二) 如何开发一个简单的爬虫

首先基本的爬虫开发,一般涉及到抓包工具的使用,比如抓取一下带有请求参数的链接,需要知道参数的字段名称等,每个字段是否加密,现在介绍一个简单的例子,抓取百度新闻。

1 下载页面(使用jdk自带的下载工具包)

 /**
     * 给定一个链接地址进行下载
     * @param link
     * @return
     */
    public String down(String link) throws Exception{
        //常见url对象
        URL url = new URL(link);
        //链接服务端
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();
        //设置一些参数
        conn.setRequestMethod("GET");
        conn.setRequestProperty("Content-Type","text/html");

        //握手
        conn.connect();

        //获取返回的结果流
        InputStream is = conn.getInputStream();
        //获取返回回来的网页内容
        InputStreamReader isr = new InputStreamReader(is,CHARSET);
        BufferedReader reader = new BufferedReader(isr);

        StringBuffer buffer = new StringBuffer();
        //遍历输入流,将网页源码写入到buffer中
        reader.lines().forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                buffer.append(s);
            }
        });
        return buffer.toString();
    }

2 针对下载到的网页进行解析

解析使用的是正则抽取,代码如下:

/**
     * 解析
     * @param html
     * @return
     */
    public void parse(String html){
        //抽取a标签的正则
        String regex = "<a.*?</a>";
        //抽取数据
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(html);

        //遍历
        while(matcher.find()){
            String atag = matcher.group();

            //url
            String url = getUrl(atag);
            //title
            String title = atag.replaceAll("<.*?>","");

            //打印数据
            System.out.println(url + "\t" + title);
        }
    }

    /**
     *
     * @param atag
     * @return
     */
    public String getUrl(String atag){
        //抽取a标签的正则
        String regex = "(?:href=\")(.*?)(?:\")";
        //抽取数据
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(atag);
        if(matcher.find())return matcher.group(1);
        return null;
    }

下載百度新聞首頁,并解析其中的超連接和對應的文本內容執行結果如下:

上面这个就是爬虫的一个简单的抓取过程,爬虫一共应该分3个阶段:

1 下载
2 解析
3 存储

上面主要介绍了下载和解析的过程,上面这个解析好的是超链接,对于我们来说没有任何用处,我们想看的是新闻正文的内容,因此只要将这些链接放入到缓存中,在依次取出经过上面的过程在进行下载解析。下载到的页面就是正文内容了,具体的过程和代码看下一节博客。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值