如何用Java编写爬虫?

摘要:爬虫 pattern :表示正则表达式 Matcher:文本匹配器,作用按照正则表达式的规则去读取字符串,从头开始读取 步骤: 获取正则表达式的对象 Pattern p=Pattern.compile(" 正则表达
爬虫 pattern :表示正则表达式 Matcher:文本匹配器,作用按照正则表达式的规则去读取字符串,从头开始读取 步骤: 获取正则表达式的对象 Pattern p=Pattern.compile(" 正则表达式"); 获取文本匹配器的对象 String str="文本"; Matcher m=p.matcher(str); p:规则,str:大串,m;文本匹配器的对象 m要在str中找符合p规则的小串 拿着文本匹配器从头开始读取,寻找是否满足规则的字串,如果没有,方法返回false。 如果有,返回true,在底层记录字串的起始索引和结束索引。 boolean b=m.find(); 方法底层会根据find方法记录的索引进行字符串的截取。 SubString(起始索引,结束索引);包头不包尾 会把截取的小串进行返回 String sl=m.group(); System.out.println(sl);打印 循环方法 获取正则表达式的对象 Pattern p=pattern.compile("正则表达式"); 获取文本匹配器的对象 拿着m去读取str,找符合p规则的字串 Matcher m=p.matcher(str) str:文本 利用循环获取 while(m.find()){ String s=m.group(); System.out.println(s); } m.find()为false时,循环结束 爬取模式 贪婪爬取:在爬取中尽可能多的获取数据 非贪婪爬取:在爬取中尽可能少的获取数据 例:abbbbbbb 贪婪爬取:ab+ --> abbbbbbb 非贪婪爬取:ab+? --> ab 在数量词+*后面加上问号,就是非贪婪爬取 方法 方法名说明 public String [] matches(String regex) 判断字符串是否满足正则表达式的规则 public String replaceAll(String regex,String newStr) 按正则表达式的规则替换 public String split(String regex) 按照正则表达式的规则切割字符串 捕获分组和非捕获分组 捕获分组(默认): 后续还要用本组的数据 正则内部使用: \ \组号 正则外部使用:$ 组号 非捕获分组: 分组之后不需要再用本组数据,仅仅是把数据括起来,不占组号 注意:组号从1开始,连续不间断,以左括号为基准,最左边是第一组 符号含义举例 (?:正则) 获取所有 java(?:8|11|17) (?=正则) 获取前面部分 java(?=8|11|17) (?!正则) 获取不是指定内容的前面部分 java(?!8|11|17)