【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,4boolean 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;//获取正则表达式的对象patternString 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);}}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

0基础学习VR全景平台篇第146篇:为什么需要3D元宇宙编辑器?

一.什么是3D元宇宙编辑器? 3D元宇宙编辑器是全新3DVR交互渲染创作工具,集3D建模、虚拟展厅、AI数字人等能力,渲染和虚拟现实技术于一身的生产力工具。 具有跨平台和随时随地编辑等特点,可广泛应用于展会、展厅、博物馆、可视化园…

uniapp_微信小程序客服

一、调用api 二、代码 <button open-type"contact">客服</button> 三、小程序后台添加客服人员就行

Ubuntu学习笔记之Shell与APT下载工具

基本都是摘抄正点原子的文章&#xff1a;<领航者 ZYNQ 之嵌入式Linux 开发指南 V3.2.pdf&#xff0c;因初次学习&#xff0c;仅作学习摘录之用&#xff0c;有不懂之处后续会继续更新~ 一、Ubuntu Shell操作 简单的说Shell 就是敲命令。国内把 Linux 下通过命令行输入命令叫…

RabbitMQ docker 单机部署

RabbitMQ docker 单机部署 1.单机部署 我们在Centos7虚拟机中使用Docker来安装。 1.1.下载镜像 方式一&#xff1a;在线拉取 docker pull rabbitmq:3.8-management1.2.安装MQ 执行下面的命令来运行MQ容器&#xff1a; docker run \-e RABBITMQ_DEFAULT_USERroot \-e RAB…

CSS隐藏video标签中各种控件

1.edio标签加上controls会出现视频控件&#xff0c;如播放按钮、进度条、全屏、观看的当前时间、剩余时间、音量按钮、音量的控制条等等 <video type"video/mp4" src"" autoplay"" style"width: 400px; height: 300px;" id"e…

idea 2023 spring initializr 没有JDK1.8选项的解决方法

在升级最新版本的IDEA后,新建项目里面的 spring initializr的选项里面已经没有了JDK1.8的选项了,原因是spring官方的initializr https://start.spring.io/ 现在主推3.x版本这个最低要求是JDK17, 解决方法: 将IDEA默认的 Initializr的URL https://start.spring.io/换成第三方…

3/21 work

自由发挥登录窗口的应用场景&#xff0c;实现一个登录窗口界面。&#xff08;不要使用课堂上的图片和代码&#xff0c;自己发挥&#xff0c;有利于后面项目的完成&#xff09; 要求&#xff1a; 1. 需要使用Ui界面文件进行界面设计 2. ui界面上的组件相关设置&#xff0c;通…

记一次 .NET某游戏后端API服务 CPU爆高分析

一&#xff1a;背景 1. 讲故事 前几天有位朋友找到我&#xff0c;说他们的API服务程序跑着跑着CPU满了降不下去&#xff0c;让我帮忙看下怎么回事&#xff0c;现在貌似民间只有我一个人专注dump分析&#xff0c;还是申明一下我dump分析是免费的&#xff0c;如果想学习.NET高级…

CDH中重装Kafka

##事情缘由 之前测试集群kafka安装在01、02、04节点&#xff0c;但是01节点经常宕机&#xff0c;于是直接在CM页面上把01节点上的kafka broker手动删除了。。。 然后重新再03节点安装了新的kafka broker 于是kafka集群不能使用了&#xff01;&#xff01;&#xff01; ##初始化…

Springboot中Tomcat配置及切换Undertow

一、Tomcat配置 1. 通过application.yml配置 以下展示常用配置 server:port: 8182 # 配置端口tomcat:threads:max: 10 # 最大工作线程&#xff0c;默认是200min-spare: 5 # 最小工作线程&#xff0c;默认是10accept-count: 200 # tomcat启动线程达到最大值后&#xff0c;接受…

JSP基础进阶(案例代码)

JDBC技术 通过JDBC连接MySQL数据库 <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8" import "java.sql.*"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN&quo…

大数据开发(Spark面试真题)

大数据开发&#xff08;Spark面试真题&#xff09; 一、Spark基础和核心概念1、什么是Spark Streaming&#xff1f;简要描述其工作原理。2、什么是Spark内存管理机制&#xff1f;请解释其中的主要概念&#xff0c;并说明其作用。3、请解释一下Spark中的shuffle是什么&#xff0…

AnythingLLM

AnythingLLM是一款私人ChatGPT&#xff0c;它与传统的ChatGPT相比&#xff0c;具有更高的灵活性和可定制性。AnythingLLM是一个全栈应用程序&#xff0c;它能够将任何文档、资源或内容片段转化为上下文&#xff0c;供任何LLM&#xff08;大语言模型&#xff09;在聊天时作为参考…

大型语言模型(LLM)全解读

大型语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;是指使用大规模数据集进行预训练的神经网络模型&#xff0c;用于生成人类类似的自然语言文本。LLM在自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;领域有着广泛的…

idea快捷鍵

在IntelliJ IDEA中&#xff0c;如果你无法通过鼠标点击打开spring-boot-starter-web的依赖&#xff0c;你可以尝试以下几种方法&#xff1a; 快捷键方式&#xff1a;选中spring-boot-starter-web依赖&#xff0c;然后按下Ctrl B&#xff08;Windows和Linux&#xff09;或者Com…

两个基本功不足导致的bug

作为程序员&#xff0c;基本功不好&#xff0c;可能会在工作中经常碰到一些看起来很隐蔽的 bug&#xff0c;乍看没毛病&#xff0c;自己半天还找不到问题所在。 但是&#xff0c;如果基本功扎实的同学可能一眼就能看出来。 一、HashMap 取不到值 Map<Integer, Integer>…

Scikit-Learn逻辑回归(二)

Scikit-Learn逻辑回归二&#xff1a;多项式与正则化 1、多项式回归回顾1.1、逻辑回归为什么要使用多项式1.2、多项式回归及原理 2、逻辑回归与多项式 1、多项式回归回顾 本文接上篇&#xff1a;Scikit-Learn逻辑回归(一) 上篇中&#xff0c;我们详细介绍了逻辑回归的概念、原理…

哪种造型更适合铸铁焊接平台——河北北重厂家专业设计制造

哪种造型更适合焊接平台取决于具体的需求和条件。以下是一些常见的焊接平台造型供参考&#xff1a; 平面平台&#xff1a;这是最简单的造型&#xff0c;适合进行标准的焊接工作。平面平台提供了稳定的工作表面&#xff0c;便于操作和移动。 运输平台&#xff1a;如果需要频繁移…

spring boot 如何升级 Tomcat 版本

在Spring Boot应用程序中升级内嵌的Tomcat版本通常涉及以下几个步骤&#xff1a; 1. 确定当前使用的Tomcat版本 首先&#xff0c;你需要确定你的Spring Boot应用程序当前使用的Tomcat版本。这可以通过查看项目的pom.xml或build.gradle文件来完成&#xff0c;其中会列出所有的…

计算机网络2 TCP/IP协议

目录 1 前言2 传输层2.1 端口号2.2 UDP2.3 TCP 3 网络层3.1 IP 4 数据链路层4.1 以太网4.2 ARP 5 DNS6 NAT 1 前言 2 传输层 2.1 端口号 端口号又分为&#xff1a; 知名端口&#xff1a;知名程序在启动之后占用的端口号&#xff0c;0-1023。 HTTP, FTP, SSH等这些广为使用的…