【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 下通过命令行输入命令叫…

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高级…

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…

Scikit-Learn逻辑回归(二)

Scikit-Learn逻辑回归二&#xff1a;多项式与正则化 1、多项式回归回顾1.1、逻辑回归为什么要使用多项式1.2、多项式回归及原理 2、逻辑回归与多项式 1、多项式回归回顾 本文接上篇&#xff1a;Scikit-Learn逻辑回归(一) 上篇中&#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等这些广为使用的…

Netty(2)-编写简单的Netty应用程序

本篇将讲述如何书写简单的Netty服务端和客户端。 1. 编写服务端 所有的Netty服务器都需要以下两部分&#xff1a; 至少一个ChannelHandler&#xff0c;该组件实现了服务器对从客户端接收的数据的处理&#xff0c;即它的业务逻辑。引导&#xff0c;配置服务器的启动代码。至少…

【CKA模拟题】查找集群中使用内存最高的node节点

题干 For this question, please set this context (In exam, diff cluster name) kubectl config use-context kubernetes-adminkubernetesFind the Node that consumes the most MEMORY in all cluster(currently we have single cluster). Then, store the result in the …

云效 AppStack + 阿里云 MSE 实现应用服务全链路灰度

作者&#xff1a;周静、吴宇奇、泮圣伟 在应用开发测试验证通过后、进行生产发布前&#xff0c;为了降低新版本发布带来的风险&#xff0c;期望能够先部署到灰度环境&#xff0c;用小部分业务流量进行全链路灰度验证&#xff0c;验证通过后再全量发布生产。本文主要介绍如何通…

springboot网站开发如何配置log4j日志插件

springboot网站开发如何配置log4j日志插件&#xff01;为了便于服务器等环境下的错误情况的排查根源&#xff0c;还是很有必要使用日志插件的&#xff0c;它可以记录下我们提前埋下的锚点信息。 在遇到故障&#xff0c;查看这些锚点记录的日志信息&#xff0c;可以快速高效的解…

低压MOS在无人机上的应用-REASUNOS瑞森半导体

一、前言 无人机的结构由机身、动力系统、飞行控制系统、链路系统、任务载荷等几个方面组成的。 无人机动力系统中的电机&#xff0c;俗称“马达”&#xff0c;是无人机的动力来源&#xff0c;无人机通过改变电机的转速来改变无人机的飞行状态。即改变每个电机的速度&#xf…

【Django开发】前后端分离美多商城项目第3篇:用户部分,1. 后端接口设计:【附代码文档】

美多商城项目4.0文档完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;美多商城&#xff0c;项目准备1.B2B--企业对企业,2.C2C--个人对个人,3.B2C--企业对个人,4.C2B--个人对企业。项目准备&#xff0c;配置1. 修改settings/dev.py 文件中的路径信息,2. INS…

数据结构--二叉树(超详细)

目录 1. 树概念及结构 1.1树概念 1.2树的表示 2. 二叉树概念及结构 2.1概念 2.2数据结构中的二叉树 2.3特殊的二叉树 2.4二叉树的存储结构 2.4.1顺序存储 2.4.2链式存储 2.5二叉树的性质 3. 二叉树顺序结构及概念 3.1二叉树的顺序结构 3.2堆的概念及结构 3.3堆的…

uinapp开发-PHP语言-后端安装说明-适用于圈子-陪玩-交友-校园-团购-外卖-分销等多系统-APP小程序H5多端皆有!

后端安装说明 全新安装客户&#xff0c;按此安装调试步骤&#xff0c;请按顺序&#xff1a; ** 后台安装步骤及说明 ** 1、在服务器里安装宝塔。下载www.bt.cn。 宝塔安装完毕后&#xff0c;安装环境&#xff0c;Nginx或者Apache 请选择PHP7.3 数据库mysql5.6。 NGINX 1.22.1轻…

matlab ICP配准高阶用法——统计每次迭代的配准误差并可视化

目录 一、概述二、代码实现三、结果展示1、原始点云2、配准结果3、配准误差本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、概述 在进行论文写作时,需要做对比实验,来分析改进算法的性能,期间用到了迭代误差分布统…

前端框架推荐 Arco Design

Arco Design - 企业级产品的完整设计和开发解决方案 预览地址&#xff1a;Arco Design Pro - 开箱即用的中台前端/设计解决方案 一 开发 有vue3、React版本。 文档地址&#xff1a;Arco Design - 企业级产品的完整设计和开发解决方案 还配有对应脚手架&#xff1a;GitHub -…