• 对于爬虫的学习


    本地爬取

    1. package MyApi.a08regexdemo;
    2. import java.util.regex.Matcher;
    3. import java.util.regex.Pattern;
    4. public class RegexDemo03 {
    5. public static void main(String[] args) {
    6. //要求:找出里面所有javaxx
    7. String str="Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11"+"因为这两个是长期支持的版本,下一个长期支持的版本是Java17" +
    8. "相信在不久的未来Java17也会逐渐登上历史舞台";
    9. // method1(str);
    10. //1.获取正则表达式的对象
    11. Pattern pattern = Pattern.compile("Java\\d{0,2}");
    12. //2.获取文本匹配器的对象
    13. Matcher m = pattern.matcher(str);
    14. //3.利用循环获取
    15. while(m.find()){
    16. String s=m.group();
    17. System.out.println(s);
    18. }
    19. }
    20. private static void method1(String str) {
    21. //获取正则表达式的对象
    22. Pattern pattern = Pattern.compile("Java\\d{0,2}");
    23. //获取文本匹配器的对象
    24. Matcher m = pattern.matcher(str);
    25. //拿着文本匹配器从头开始读取,寻找是否有满足规则的字串
    26. //如果没有,方法返回false
    27. //如果有,返回true,在底层记录字串的起始索引和结束索引+1
    28. boolean b = m.find();
    29. //方法底层会根据find方法记录的索引进行字符串的截取
    30. //subString(起始索引,结束索引):包头不包尾
    31. //会把截取的小串进行返回
    32. String s1= m.group();
    33. System.out.println(s1);
    34. //第二次调用find的时候,会继续读取后面的内容
    35. //读取到第二个满足要求的字串,方法会继续返回true
    36. //并把第二个字串的起始索引和结束索引+1,进行记录
    37. boolean b1 = m.find();
    38. String s2=m.group();
    39. System.out.println(s2);
    40. }
    41. }

    网络爬取

    1. package MyApi.a08regexdemo;
    2. import javax.print.DocFlavor;
    3. import java.io.BufferedReader;
    4. import java.io.InputStreamReader;
    5. import java.net.URL;
    6. import java.net.URLConnection;
    7. import java.util.regex.Matcher;
    8. import java.util.regex.Pattern;
    9. public class RegexDemo04 {
    10. public static void main(String[] args) {
    11. /*需求:
    12. 把连接:http://m.sengzan.com/jiaoyu/29104.html?ivk_sa=105883i
    13. 中的所有身份证号码都爬取出来
    14. * */
    15. //创建一个url对象
    16. URL url=new URL("http://m.sengzan.com/jiaoyu/29104.html?ivk_sa=105883i");
    17. //连接上这个网址
    18. URLConnection conn=url.openConnection();
    19. //创建一个对象去读取网络中的数据
    20. BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream())) ;
    21. String line;
    22. //获取正则表达式对象
    23. String regex="[1-9]\\d{17}";
    24. Pattern pattern=Pattern.compile(regex);
    25. while((line=br.readLine())!=null){
    26. Matcher matcher=pattern.matcher(line);
    27. while(matcher.find()){
    28. System.out.println(matcher.group());
    29. }
    30. }
    31. br.close();
    32. }
    33. }
    1. package MyApi.a08regexdemo;
    2. import java.util.regex.Matcher;
    3. import java.util.regex.Pattern;
    4. public class Regexdemoo5 {
    5. public static void main(String[] args) {
    6. /*
    7. * 需求:把下面的文本中的座机号码,邮箱,手机号,热线都爬取出来
    8. * 来黑马程序员学习Java
    9. * 手机号: 18512516758,18512508907
    10. * 或者联系邮箱:boniu@itcast.cn,
    11. * 座机电话:01036517895,010-9895256
    12. * 邮箱:boniu@itcast.cn,
    13. * 热线电话:400-618-9090,400-618-4000,4006184000,4006189090 */
    14. String s="来黑马程序员学习Java" +
    15. "手机号: 18512516758,18512508907" +
    16. "或者联系邮箱:boniu@itcast.cn," +
    17. "座机电话:01036517895,010-9895256" +
    18. "邮箱:boniu@itcast.cn," +
    19. "热线电话:400-618-9090,400-618-4000,4006184000,4006189090";
    20. String regex1="1[3-9]\\d{9}|(\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z]{2,3}){1,2})"+
    21. "|(0\\d{2,3-?[1-9]\\d{4,9})|" +
    22. "(400-?[1-9]\\d{2}-?[1-9]\\d{3})";
    23. Pattern pattern=Pattern.compile("regex1");
    24. Matcher m = pattern.matcher(s);
    25. while(m.find()){
    26. String str= m.group();
    27. System.out.println(str);
    28. }
    29. }
    30. }

    1. package MyApi.a08regexdemo;
    2. import java.util.regex.Matcher;
    3. import java.util.regex.Pattern;
    4. public class Regexdemo06 {
    5. public static void main(String[] args) {
    6. String str="java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11"+"因为这两个是长期支持的版本,下一个长期支持的版本是Java17" +
    7. "相信在不久的未来Java17也会逐渐登上历史舞台";
    8. //需求1
    9. String regex1="((?i)Java)(?=8|11|17)";
    10. //需求2
    11. String regex2="((?i)Java)(8|11|17)";
    12. String regex3="((?i)Java)(?:8|11|17)";
    13. //需求3
    14. String regex4="((?i)Java)(?!8|11|17)";
    15. Pattern pattern=Pattern.compile(regex4);
    16. Matcher matcher = pattern.matcher(str);
    17. while(matcher.find()){
    18. String s=matcher.group();
    19. System.out.println(s);
    20. }
    21. }
    22. }

    贪婪爬取和非贪婪爬取

    1. package MyApi.a08regexdemo;
    2. import java.util.regex.Matcher;
    3. import java.util.regex.Pattern;
    4. public class Regexdemo07 {
    5. public static void main(String[] args) {
    6. String str="Java自从95年问世以来abbbbbbbbbbbbaaaaaaaaaaaaaaaaaa,经历了很多版本,目前企业中用的最多的是Java8和Java11"+"因为这两个是长期支持的版本,下一个长期支持的版本是Java17" +
    7. "相信在不久的未来Java17也会逐渐登上历史舞台";
    8. /*
    9. * 贪婪爬取:在爬取数据的时候尽可能的多获取数据
    10. * 非贪婪爬取:在爬取数据的时候尽可能的少获取数据
    11. * java当中默认是贪婪爬取
    12. * 如果我们在数量词+ * 的后面加上问号,那么此时就是非贪婪爬取*/
    13. //需求1
    14. String regex="ab+";
    15. //需求2
    16. String regex1="ab+?";
    17. Pattern pattern=Pattern.compile(regex);
    18. Matcher matcher = pattern.matcher(str);
    19. while(matcher.find()){
    20. System.out.println(matcher.group());
    21. }
    22. }
    23. }

  • 相关阅读:
    关于servlet提交响应后无法跳转
    按键的单击、双击、连续按、短按和长按实现思路
    PC_访存过程@内存地址翻译过程@具有快表TLB和cache的多级存储系统
    golang学习笔记系列之go语言代码的组织
    python pytorch- TextCNN TextRNN FastText Transfermer (中英文)文本情感分类实战(附数据集,代码皆可运行)
    凭借32量子比特!Rigetti Computing打入英国量子计算市场
    国产ETL工具BeeDI 产品 之 全国连锁到集团总部 数据同步
    机械硬盘,Win10系统,磁盘100%
    CSS实现透明度效果的两种方法—— opacity 和 rgba()
    Proteus仿真--一种智能频率计的设计与制作(AVR单片机+proteus仿真)
  • 原文地址:https://blog.csdn.net/qq_52326978/article/details/136400197