前言必读
一、本地爬虫
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