java爬虫(本地爬虫和网络爬虫)

导读:本篇文章讲解 java爬虫(本地爬虫和网络爬虫),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

前言必读

读者手册(必读)_云边的快乐猫的博客-CSDN博客

一、本地爬虫 

1.这是爬取的是本地的数据,可以按照步骤来进行,用的是正则表达式的方式去爬取的

Pattern:表示正则表达式

Matcher:文本匹配器:按照正则表达式的规则读取字符串

package learn3;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class demo1 {
    public static void main(String[] args) {
        //要被爬取的数据
        String str ="Java自95年问世以来,经历了很多的版本,目前企业中用的最多的是Java8和Java11,"+
                "因为这两个是长期支持的版本,下一个长期支持的版本是Java17,相信在不久的将来Java17也会登上历史的舞台,我觉得Java很棒";


        //按不同的条件获取就改变下面第一行代码括号里面的就好了
        //String str1 = "((?i)Java)(?=8|11|17)";//只按这个需求获取前半部分
        //String str2 = "((?i)Java)(8|11|17)";//获取这个需求的全部
        //String str3 = "((?i)Java)(?!8|11|17)";//只获取不带后面这些条件的Java

        //1.获取正则表达式的对象。0到2表示爬取的包含第0位~2位的数字
        Pattern p = Pattern.compile("Java\\d{0,2}");//改括号这里,例如str1
        //2.获取文本匹配器的对象
        Matcher m = p.matcher(str);
        //利用循环获取
        while (m.find()){
            String s = m.group();
            System.out.println(s);
        }
    }
}

运行结果:

Java
Java8
Java11
Java17
Java17
Java 

二、网络爬虫

 一些网站是爬取不了的,只能爬取一些没有反爬的网站(本代码只是用于进行测试学习)

package learn3;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class demo1 {
    public static void main(String[] args) throws IOException {
        //1.创建一个url对象
        URL url = new URL("http://www.jn001.com/paperpc/content/content_91055.html");
        //2.连接上这个网址
        URLConnection conn = url.openConnection();
        //3.创建一个对象去读取网络中的数据
        BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String line;

        //4.正则表达式的表演开始了
        String str ="[1-9]\\d{17}";
        Pattern pattern = Pattern.compile(str);
        //5.通过循环读取出来数据
        while ((line = br.readLine())!=null){
            Matcher matcher = pattern.matcher(line);
            while (matcher.find()){
                System.out.println(matcher.group());
            }
        }
        br.close();
    }
}

运行结果:

370811198112270850
370811196512310840
370811194801030811
370811199312190817
370811193710220818
370811195405220829
370811197912040813
370811194605150816
370811197806150816
370811196910110852
370811196502110810
370811196607290811
370811198109290826
370811197207140819
370811197304130815
370811196807200817
370811199011130837
370811198604030837
370811196312040815
370811197109140815
370811198107220816
370811196102160819

三、爬取全部,但是不用正则表达式进行筛选那样就更简单了(包含网站链接)

package learn3;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class demo1 {
    public static void main(String[] args) throws IOException {
        //1.创建一个url对象
        URL url = new URL("http://www.jn001.com/paperpc/content/content_91055.html");
        //2.连接上这个网址
        URLConnection conn = url.openConnection();
        //3.创建一个对象去读取网络中的数据
        BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String line;

        //5.通过循环读取出来数据
        while ((line = br.readLine())!=null){
            System.out.println(line);
        }
        br.close();
    }
}

运行结果:

具体就不放了,可以自己运行试试看

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/112667.html

(0)
Java光头强的头像Java光头强

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!