【Java常用API】简单爬虫练习题

🍬 博主介绍

👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!


目录

练习

本地爬虫和网络爬虫

本地爬虫代码如下:

网络爬虫代码如下

练习需求

代码如下:


练习

本地爬虫和网络爬虫

有如下文本,请按照要求爬取数据。

Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是lava8和Iava11,因为这两个是

长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台

要求:找出里面所有的JavaXX

本地爬虫代码如下:

这里用while循环简单,不过也可以像下面的那种就是一直重复写,但是跟麻烦

package Regex;

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

public class pattern {
    public static void main(String[] args) {
                /* 有如下文本,请按照要求爬取数据。
                Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,
                因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台
                要求:找出里面所有的JavaXX
         */

        String str = "Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11," +
                "因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台";

        //method1(str);

        //1、获取正则表达式的对象
        Pattern p = Pattern.compile("Java\\d{0,2}");

        //2、获取文本匹配器的对象
        //拿着m去读取str,找符合p规则的子串
        Matcher m = p.matcher(str);

        //3、利用循环获取
        while (m.find()){
            String s = m.group();
            System.out.println(s);
        }


    }

    private static void method1(String str) {
        //pattern:表示正则表达式
        //Matcher:文本匹配器,作用按照正则表达式的规则去读取字符串,从头开始读取。
        //         在大串中去找符合匹配的字串

        //获取正则表达式的对象
        Pattern p = Pattern.compile("Java\\d{0,2}");
        //获取文本匹配器的对象
        //m:文本匹配器的对象
        //str:大串
        //p:规则
        Matcher m = p.matcher(str);

        //拿着文本匹配器从头开始读取,寻找是否有满足的子串
        //如果没有,方法返回false
        //如果有,返回true,在底层记录子串的起始索引和结束索引+1
        //0,4
        boolean b = m.find();

        //方法底层全部会按照find()方法进行索引进行字符串的截取
        //substring(起始索引,结束索引);包头不包尾
        //(0,4),不包含4 索引
        String s1 = m.group();
        System.out.println(s1);

        //第二次调用find方法
        b = m.find();

        //第二次调用group方法的时候,会根据find方法记录的索引再次截取子串
        String s2 = m.group();
        System.out.println(s2);
    }
}

网络爬虫代码如下
package com.itheima.a08regexdemo;

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 RegexDemo7 {
    public static void main(String[] args) throws IOException {
        /* 扩展需求2:
            把连接:https://m.sengzan.com/jiaoyu/29104.html?ivk sa=1025883i
            中所有的身份证号码都爬取出来。
        */

        //创建一个URL对象
        URL url = new URL("https://m.sengzan.com/jiaoyu/29104.html?ivk sa=1025883i");
        //连接上这个网址
        //细节:保证网络是畅通
        URLConnection conn = url.openConnection();//创建一个对象去读取网络中的数据
        BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String line;
        //获取正则表达式的对象pattern
        String regex = "[1-9]\\d{17}";
        Pattern pattern = Pattern.compile(regex);//在读取的时候每次读一整行
        while ((line = br.readLine()) != null) {
            //拿着文本匹配器的对象matcher按照pattern的规则去读取当前的这一行信息
            Matcher matcher = pattern.matcher(line);
            while (matcher.find()) {
                System.out.println(matcher.group());
            }
        }
        br.close();
    }
}

练习需求

把下面文本中的座机电话,邮箱,手机号,热线都爬取出来。

来实验室程序员学习Java,

手机号:18512516758,18512508907或者联系邮箱:boniu@itcast.cn,

座机电话:01036517895,010-98951256邮箱:bozai@itcast.cn,

热线电话:400-618-9090 ,400-618-4000,4006184000,4006189090

代码如下:
package Regex;

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

public class pattern2 {
    public static void main(String[] args) {
                /*
            需求:把下面文本中的座机电话,邮箱,手机号,热线都爬取出来。
            来黑马程序员学习Java,
            手机号:18512516758,18512508907或者联系邮箱:boniu@itcast.cn,
            座机电话:01036517895,010-98951256邮箱:bozai@itcast.cn,
            热线电话:400-618-9090 ,400-618-4000,4006184000,4006189090

            手机号的正则表达式:1[3-9]\d{9}
            邮箱的正则表达式:\w+@[\w&&[^_]]{2,6}(\.[a-zA-Z]{2,3}){1,2}座机电话的正则表达式:θ\d{2,3}-?[1-9]\d{4,9}
            热线电话的正则表达式:400-?[1-9]\\d{2}-?[1-9]\\d{3}

        */

        String s = "来实验室程序员学习Java," +
                "电话:18512516758,18512508907" + "或者联系邮箱:boniu@itcast.cn," +
                "座机电话:01036517895,010-98951256" + "邮箱:bozai@itcast.cn," +
                "热线电话:400-618-9090 ,400-618-4000,4006184000,4006189090";

        String regex = "(1[3-9]\\d{9})|(\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z]{2,3}){1,2})" +
                "|(0\\d{2,3}-?[1-9]\\d{4,9})" +
                "(400-?[1-9]\\d{2}-?[1-9]\\d{3})";

        //1、获取正确的正则表达式的对象
        Pattern p = Pattern.compile(regex);

        //2、获取文本匹配的对象
        //利用m去读取s,会按照p的规则找里面的小串
        Matcher m = p.matcher(s);

        //3、利用循环获取每一个数据
        while (m.find()){
            String str = m.group();
            System.out.println(str);
        }






    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/476586.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Unity实战系列】Unity的下载安装以及汉化教程

君兮_的个人主页 即使走的再远,也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,怎么说呢,其实这才是我以后真正想写想做的东西,虽然才刚开始,但好歹,我总算是启程了。今天要分享…

Java特性之设计模式【装饰器模式】

一、装饰器模式 概述 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装 装饰器模式通过将对象包装在装饰器类中,以…

单片机--数电(4)

触发器 数字电路中:分组合逻辑电路与时序逻辑电路两大类 组合逻辑电路的基本单元是门电路(与或非等一些门电路) 时序逻辑电路的基本单元是触发器 触发器与门电路的区别 门电路某一时刻的输出信号完全取决于该时刻的输入信号,…

【目标检测实验系列】AutoDL线上GPU服务器租用流程以及如何用Pycharm软件远程连接服务器进行模型训练 (以Pycharm远程训练Yolov5项目为例子 超详细)

目录 1. 文章主要内容2. 租用AutoDL服务器详细教程2.1 注册AutoDL账号,并申请学生认证(学生认证有优惠,如果不是学生可以忽略此点)2.2 算力市场选择GPU,并选择初始化配置环境2.3 控制台参数解析,并使用相关参数登录Xftp(Windows与…

安卓开发日记:实现APP重启逻辑,适用于热更后重启游戏进行加载

可根据合适的弹窗搭配使用重启逻辑,建议使用在热更包加载后使用,帮助部分热更后未及时生效的逻辑范围首先,在逻辑调用Activity类中创建一个成员变量,给后续逻辑接口直接使用 如下 public class MainActivity extends Activity {…

rundeck k8s部署踩坑

1、镜像启动后原来的定时任务无法运行 参考: https://github.com/rundeck/rundeck/issues/4275 https://stackoverflow.com/questions/60942785/env-variable-for-rundeck-feature-joblifecycleplugin-enabled/60959605#60959605 结论: (1&…

vue3项目中使用 hiprint

基于 vue3 的打印 hiprint 打印官网 hiprint hiprint 是一个web 打印的js组件,无需安装软件。支持移动端,PC端浏览器,angular,vue,react, 等 分页预览,打印,操作简单,运行快速。 在 vue3 项目中使用打印&a…

【嵌入式学习】Qtday03.21

一、思维导图 二、练习 自由发挥登录窗口的应用场景,实现一个登录窗口界面。(不要使用课堂上的图片和代码,自己发挥,有利于后面项目的完成) 要求: 1. 需要使用Ui界面文件进行界面设计 2. ui界面上的组件…

shell脚本命令

最后更新日期:2024-03-21 文章目录 一、echo二、特殊变量1、$n2、$#3、$*4、$5、$? 三、运算符1、expr2、$[nn] 三、条件判断1、[ condition ]2、&&3、|| 四、流程控制1、if2、case3、for4、while 五、read读取控制台输入 一、echo 打印变量 #! /bin/ba…

k8s安装详细教程1

环境初始化 1、检查操作系统的版本 Last login: Mon Mar 18 08:57:10 2024 [rootcontroller ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [rootcontroller ~]# vi /etc/hosts2、时间同步 kubernetes要求集群中的节点时间必须精确一直,这里…

32.网络游戏逆向分析与漏洞攻防-游戏网络通信数据解析-网络数据分析原理与依据

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 内容参考于:易道云信息技术研究院VIP课 上一个内容:31.其它消息的实…

除了Confluence,有没有其他工具一样好用?

每个团队都需要一个协同工作工具,以更有效地管理任务、跟踪进度和分享知识。这就是Atlassian的Confluence发挥作用的地方。然而,尽管它相当强大,其昂贵的价格和复杂的界面可能会让某些用户望而却步。所以,还有其他工具可以替代Con…

Markdown快速入门(常用技巧)

目录 说明常用书写技巧1.标题分级2.代码块3.字体4.引用语法5.分割线6.图片插入(本地/网络)7.超链接8.列表9.表格10.换行(两个空格)11.插入公式12.脚注 说明 markdown实际上类似于网页,可以根据喜欢设置其样式变化,创建…

多模态开源大模型

感知类总榜单,是将各项感知任务综合起来的总评分,显示是BLIP-2最高: 认知类总榜单,则是各种涉及认知类任务的榜单,加起来是MiniGPT-4最高: 一、LLaVA-1.5(浙大实验室》:LLaVA 二、…

如何修复WordPress网站媒体库上传文件失败的问题

公司最近推出了一系列新产品,为了更新网站的视频和图片,我们需要将它们上传至网站媒体库。然而,在上传视频时,我们却遇到了一些问题。系统提示说,我们尝试上传的视频文件大小超出了站点的最大上传限制。尽管我们的视频…

实战whisper第二天:直播语音转字幕(全部代码和详细部署步骤)

直播语音实时转字幕: 基于Whisper的实时直播语音转录或翻译是一项使用OpenAI的Whisper模型实现的技术,它能够实时将直播中的语音内容转录成文本,甚至翻译成另一种语言。这一过程大致分为三个步骤:捕获直播音频流、语音识别&#x…

【嵌入式——QT】QT Charts

【嵌入式——QT】QT Charts 概述Qt提供的坐标轴类QChartQLineSeriesQValueAxis常见图表及用到的序列类图示代码示例 概述 QT Charts模块是一组易于使用的图表组件,它基于Qt的Graphics View架构,其核心组件是QChartView和QChart,QChartView父…

前端开发经验分享:写页面时总是有预期之外的滚动条怎么办?

问题描述: 在制作一个页面时常常会出现一些预期之外的滚动条,一般有以下原因:1.内容过多:当容器内的内容(如文本、图片等)的总高度或总宽度超过容器的可视区域时,滚动条就会出现。2.样式设置&a…

一维前缀和一维差分(下篇讲解二维前缀和二维差分)(超详细,python版,其他语言也很轻松能看懂)

本篇博客讲解一维前缀和,一维差分,还会给出一维差分的模板题,下篇博客讲解 二维前缀和&二维差分。 一维前缀和: 接触过算法的小伙伴应该都了解前缀和,前缀和在算法中应用很广,不了解也没有关系&#…

基于SSM的中国旅游网站管理系统+数据库+数据库表结构文档+免费远程调试

项目介绍: Javaee项目,采用M(model)V(view)C(controller)三层体系结构,通过Spring SpringMvc Mybatis JspBootstrap来实现。MySQL数据库作为系统数据储存平台&#xff…