烟台市做网站找哪家好,外贸seo博客,红色礼品网站模板,模板网站建设源码1.本地爬虫
Pattern:表示正则表达式
Matcher:文本匹配器#xff0c;作用按照正则表达式的规则去读取字符串#xff0c;从头开始读取。在大串中去找符合匹配规则的子串。
1.2.获取Pattern对象
通过Pattern p Pattern.compile(正则表达式);获得
1.3.获取Matc…1.本地爬虫
Pattern:表示正则表达式
Matcher:文本匹配器作用按照正则表达式的规则去读取字符串从头开始读取。在大串中去找符合匹配规则的子串。
1.2.获取Pattern对象
通过Pattern p Pattern.compile(正则表达式);获得
1.3.获取Matcher对象
通过Matcher m p.matcher(str);获得 (m要在str中找符合p规则的小串)
其中, m为Matcher对象, p为正则表达式规则, str为要验证的字符串.
1.4.匹配文本中的对象
boolean b m.find(); 表示拿着文本匹配器从头开始读取寻找是否有满足规则的子串如果没有方法返回false. 如果有返回true。在底层记录子串的起始索引和结束索引1.
1.5.截取文本匹配器的索引
String s m.group(); 这时文本匹配器会停留在第一个匹配文本的结束索引1处, 返回一个文本中索引为(0,4)不包含4索引的字符串(符合规则的).
1.6.继续匹配和获取索引
重复第4步和第五步, 从上一次停留的地方开始向后查找.
第4步和第5步一般通过while(m.find()){}循环实现.
String s 电话12345678901, 邮箱123qq.com;// 写正则表达式String regex ([1]\\d{10}|\\w{1,}[\\w[^-]]{2,}([.][c][omn]{1,3}));// 生成正则对象Pattern pattern Pattern.compile(regex);// 生成匹配器对象Matcher matcher pattern.matcher(s);// 用循环去读取匹配的内容while (matcher.find()) {// 获取匹配的字符串String group matcher.group();System.out.println(group);}
2.网络爬虫 // 创建一个URL对象URL url new URL(https://blog.csdn.net/Orange_sparkle?typelately);// 连接网址URLConnection conn url.openConnection();
// conn.setRequestProperty(User-Agent, Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt));// 创建对象读取数据BufferedReader bufferedReader new BufferedReader(new InputStreamReader(conn.getInputStream()));
// conn.setRequestProperty(User-Agent, Mozilla/4.76);String information;// 获取正则表达式对象pattern
// String regex ;
// Pattern pattern Pattern.compile(regex);// 在读取的时候每次读一行while ((information bufferedReader.readLine()) ! null) {System.out.println(information);
// Matcher matcher pattern.matcher(information);
// while (matcher.find()){
// System.out.println(matcher.group());
// }}bufferedReader.close();
3.有条件的爬取数据 ? 代表的是前面的数据, 后面的一个符号加正则表达式的意思是后面需要跟随的数据.
如果不看符号表示的就是需要匹配Java(8|11|17)这个字符串. 而其中的符号表示如下 :
表示只获取等号之前的数据, 忽略之后的.
: 表示冒号前后都获取
! 表示获取除了感叹号之后的数据
除了设置正则表达式不同, 之后的步骤都和之前一样
4.贪婪爬取和非贪婪爬取 贪婪爬取 : 在爬取数据的时候尽可能的多获取数据 (如:abbbbbbbbbbbb)
非贪婪爬取 : 在爬取数据的时候尽可能的少获取数据 (如:ab)
Java当中默认的就是贪婪爬取
如果我们在数量词*的后面加上问号那么此时就是非贪婪爬取
5.正则表达式在字符串中的使用 先创建一个正则表达式规则, 然后传入字符串方法中, 返回的就是新的替换后的字符串或切割后的字符串数组了.
6.分组 红色为第一组, 蓝色为第二组, 绿色为第三组
6.1.捕获分组 \\组号表示的就是把该组匹配的内容在匹配一遍, 两部分的内容相同. 在外部使用本组数据需要用到$组号. 6.2非捕获分组
特点:不占用组号 7.总结