IO练习网络爬虫获取

题目:

具体文字内容如下:

练习:制造假数据

需求:制造假数据是开发中的一项重要能力,从各个网站爬取数据是其中的一种方法。

获取姓氏示例及链接:
赵钱孙李 周吴郑王
链接:百家姓_诗词_百度汉语

男生名字示例及链接:
子轩 浩宇 浩然 博文 宇轩 子涵 南淳 皓轩 梓轩
链接:男生有诗意的名字推荐(龙年男孩起名)

女生名字示例及链接:
子涵 怡萱 梓涵 晨曦 紫涵 诗涵 梦琪 慧怡 子萱 雨涵
链接:2024年清新有诗意女孩名字取名(龙年女孩名字)

获取它们的信息组成姓名+性别+年龄

代码 :

先通过方法获取链接里的信息:

先new一个StringBuilder类,再new一个URL类,通过URL里的方法获取链接里的数据,因为是字节流所以要使用转换流转换成字符流,再把里面的数据装入StringBuilder里,使用StringBuilder.append方法,再释放资源

public static String name(String str) throws IOException {//用来打印类StringBuilder builder = new StringBuilder();//创建URL对象URL url = new URL(str);//链接网站URLConnection urlConnection = url.openConnection();//读取里面的数据InputStreamReader inputStreamReader = new InputStreamReader(urlConnection.getInputStream());int len;while ((len=inputStreamReader.read())!=-1){builder.append((char) len);}inputStreamReader.close();return builder.toString();}

 我们再通过正则表达式来自定规则 先new一个数组 再通过Pattern.compile(str)自定规则,把这个规则放在网络中的数据中compile.matcher(name);再通过while循环判断判断符合规则matcher.find()

,符合打印到数组中list.add(matcher.group(a));

 private static ArrayList<String> getData(String name, String str,int a) {ArrayList<String> list = new ArrayList<>();//以str为规则Pattern compile = Pattern.compile(str);//套用规则Matcher matcher = compile.matcher(name);while (matcher.find()){list.add(matcher.group(a));}return list;}
姓氏:
 ArrayList<String> list = getData(name, "([\\u4E00-\\u9FA5]{4})(,|。)", 1);
男生名:
ArrayList<String> list2 = getData(name1, "([\\u4E00-\\u9FA5]{2})(、|。)", 1);

女生名:

ArrayList<String> list3 = getData(name2, "(.. ){4}..", 0);

把它们的数据装入各自的数组中

通过这些数据来做题

随机男女生人数 ,不重复,随机姓名,随机年龄

请看代码:

 private static ArrayList<String> GetInFos(ArrayList<String> surname,ArrayList<String> boy,ArrayList<String> girl,int Count,int count){//随机男生HashSet<String> strings = new HashSet<>();while (true){if (strings.size()==Count){break;}Collections.shuffle(surname);Collections.shuffle(boy);strings.add(surname.get(0)+boy.get(0));}HashSet<String> strings1 = new HashSet<>();while (true){if (strings1.size()==count){break;}Collections.shuffle(surname);Collections.shuffle(girl);strings1.add(surname.get(0)+girl.get(0));}ArrayList<String> list = new ArrayList<>();Random random = new Random();//男生for (String string : strings) {int i1 = random.nextInt(10) + 18;list.add(string+"-男-"+i1);}//女生for (String string : strings1) {int i1 = random.nextInt(8) + 18;list.add(string+"-女-"+i1);}return list;}

最后统统放入一个数组中。

全部代码:

import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Demo1 {public static void main(String[] args) throws IOException {String a = "https://hanyu.baidu.com/shici/detail?pid=0b2f26d4c0ddb3ee693fdb1137ee1b0d&from=kg0";String b = "http://www.haoming8.cn/baobao/10881.html";String c = "http://www.haoming8.cn/baobao/7641.html";String name = name(a);String name1 = name(b);String name2 = name(c);//中文[\u4E00-\u9FA5]//姓氏ArrayList<String> surname = new ArrayList<>();ArrayList<String> list = getData(name, "([\\u4E00-\\u9FA5]{4})(,|。)", 1);for (String s : list) {for (int i1 = 0; i1 < s.length(); i1++) {char at = s.charAt(i1);surname.add(at+"");}}//去重复//男生ArrayList<String> list5 = new ArrayList<>();ArrayList<String> list2 = getData(name1, "([\\u4E00-\\u9FA5]{2})(、|。)", 1);for (String s : list2) {if (!list5.contains(s)){list5.add(s);}}//女生ArrayList<String> list4 = new ArrayList<>();ArrayList<String> list3 = getData(name2, "(.. ){4}..", 0);for (String s : list3) {//以空格为分隔符String[] split = s.split(" ");for (String string : split) {list4.add(string);}}ArrayList<String> list1 = GetInFos(surname, list5, list4, 20, 20);for (int i1 = 0; i1 < list1.size(); i1++) {String s = list1.get(i1);System.out.println(s);}}private static ArrayList<String> GetInFos(ArrayList<String> surname,ArrayList<String> boy,ArrayList<String> girl,int Count,int count){//随机男生HashSet<String> strings = new HashSet<>();while (true){if (strings.size()==Count){break;}Collections.shuffle(surname);Collections.shuffle(boy);strings.add(surname.get(0)+boy.get(0));}HashSet<String> strings1 = new HashSet<>();while (true){if (strings1.size()==count){break;}Collections.shuffle(surname);Collections.shuffle(girl);strings1.add(surname.get(0)+girl.get(0));}ArrayList<String> list = new ArrayList<>();Random random = new Random();//男生for (String string : strings) {int i1 = random.nextInt(10) + 18;list.add(string+"-男-"+i1);}//女生for (String string : strings1) {int i1 = random.nextInt(8) + 18;list.add(string+"-女-"+i1);}return list;}
//以正则表达式来制定规则private static ArrayList<String> getData(String name, String str,int a) {ArrayList<String> list = new ArrayList<>();//以str为规则Pattern compile = Pattern.compile(str);//套用规则Matcher matcher = compile.matcher(name);while (matcher.find()){list.add(matcher.group(a));}return list;}//获取网站内容信息public static String name(String str) throws IOException {//用来打印类StringBuilder builder = new StringBuilder();//创建URL对象URL url = new URL(str);//链接网站URLConnection urlConnection = url.openConnection();//读取里面的数据InputStreamReader inputStreamReader = new InputStreamReader(urlConnection.getInputStream());int len;while ((len=inputStreamReader.read())!=-1){builder.append((char) len);}inputStreamReader.close();return builder.toString();}
}

每日名言: 太阳每一天都是新的,生命每一天都是美的。

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

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

相关文章

如何追踪ping连接中的所有路由器的数量和IP

如何快速判断ping连接经过的路由器个数和IP&#xff1f; 方法一&#xff1a; ping命令会返回一个TTL&#xff0c;TTL&#xff08;Time To Live&#xff09;存活时间&#xff0c;一般初始值为64&#xff0c;每经过一个路由器就减一&#xff0c;当TTL为0时丢弃网络包&#xff0…

“Numpy数据分析与挖掘:高效学习重点技能“

目录 # 开篇 # 补充 zeros & ones eye 1. numpy数组的创建 1.1 array 1.2 range 1.3 arange 1.4 常见的数据类型 1.5 astype 1.6 random.random() & round 2. numpy数组计算和数组计算 2.1 reshape 2.2 shape 2.3 将一维数组变成多维数组 2.4 指定一维…

0010基于免疫遗传算法的配送中心选址

免疫优化算法&#xff08;Immune Optimization Algorithm, IOA&#xff09;在物流配送中心选址中的应用是通过模拟免疫系统的进化过程来解决选址优化问题。物流配送中心选址问题涉及到如何在给定区域内选择最优的位置&#xff0c;以最大化服务覆盖并最小化运输成本。 免疫优化…

我的FPGA

1.安装quartus 2.更新usb blaster驱动 3.新建工程 1.随便找一个文件夹&#xff0c;里面新建demo文件夹&#xff0c;表示一个个工程 在demo文件夹里面&#xff0c;新建src&#xff08;源码&#xff09;&#xff0c;prj&#xff08;项目&#xff09;&#xff0c;doc&#xff…

HTTP代理的用途有哪些-okeyproxy

通過HTTP代理&#xff0c;客戶端可以間接訪問目標伺服器&#xff0c;從而實現多種功能。無論你是普通用戶還是技術大咖&#xff0c;HTTP代理都能帶來諸多便利和安全保障。本文將從多個角度詳細探討HTTP代理的用途。 HTTP代理的重要用途 1. 訪問控制和內容過濾 在企業和教育機…

什么是语音降噪?

当我们使用手机或者电脑进行语音通话时&#xff0c;有时候会听到背景噪音干扰&#xff0c;比如人声、电视声或者风扇声。这些噪音让我们的通话变得不清晰&#xff0c;影响了沟通效果。那么&#xff0c;有没有什么方法可以让我们的语音通话更清晰呢&#xff1f;这就要介绍一下语…

压缩感知2——算法模型

采集原理 其中Y就是压缩后的信号表示(M维)&#xff0c;Φ表示采集的测量矩阵&#xff0c;可以是一个随机矩阵&#xff0c;X代表原始的数字信号&#xff08;N维&#xff09;。 常见的测量矩阵——随机高斯矩阵 随机伯努利矩阵 稀疏随机矩阵等&#xff0c;矩阵需要满足与信号的稀…

spring xml实现bean对象(仅供自己参考)

对于spring xml来实现bean 具体代码&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaL…

修改ES索引名称

1 案例背景 将ES索引【my-index】修改为【my-index-v1】&#xff0c;方便添加索引别名 2 操作步骤 首先通过PUT请求将旧索引my-index设置为可写&#xff08;如果之前设置为不可写&#xff09; PUT /my-index/_settings {"settings": {"index.blocks.write&q…

AWS无服务器 应用程序开发—第十七章 Application Composer

Application Composer 是 AWS 提供的一种可视化工具,用于设计和构建无服务器应用程序。它通过拖放界面简化了无服务器架构的创建过程,使开发者能够更直观地设计和配置应用程序的各个组件。 主要功能 可视化设计 通过拖放界面,开发者可以轻松地添加和配置 AWS 资源,如 L…

2-29 基于matlab的CEEMD

基于matlab的CEEMD&#xff08;Complementary Ensemble Empirical Mode Decomposition&#xff0c;互补集合经验模态分解&#xff09;&#xff0c;先将数据精心ceemd分解&#xff0c;得到imf分量&#xff0c;然后通过相关系数帅选分量&#xff0c;在求出他们的样本熵的特征。用…

昇思训练营打卡第二十一天(DCGAN生成漫画头像)

DCGAN&#xff0c;即深度卷积生成对抗网络&#xff08;Deep Convolutional Generative Adversarial Network&#xff09;&#xff0c;是一种深度学习模型&#xff0c;由Ian Goodfellow等人在2014年提出。DCGAN在生成对抗网络&#xff08;GAN&#xff09;的基础上&#xff0c;引…

【CentOS】Linux命令之docker命令(持续更新)

删除所有容器 该命令将删除所有已停止的容器。你还可以使用其他状态值&#xff0c;例如created、restarting或dead docker container rm $(docker container ls -aqf statusexited)删除所有镜像 该命令将删除所有镜像&#xff0c;包括被使用的镜像。请注意&#xff0c;如果某…

【深度学习】第5章——卷积神经网络(CNN)

一、卷积神经网络 1.定义 卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09;是一种专门用于处理具有网格状拓扑结构数据的深度学习模型&#xff0c;特别适用于图像和视频处理。CNN 通过局部连接和权重共享机制&#xff0c;有效地减少了参数数量&#x…

使用OpencvSharp实现人脸识别

在网上有很多关于这方面的博客&#xff0c;但是都没有说完整&#xff0c;按照他们的博客做下来代码都不能跑。所以我就自己写个博客补充一下 我这使用的.NET框架版本是 .NetFramework4.7.1 使用Nuget安装这两个程序包就够了&#xff0c;不需要其他的配置 一定要安装OpenCvSha…

大模型日报 2024-07-09

大模型日报 2024-07-09 大模型资讯 大模型最强架构TTT问世&#xff01;斯坦福UCSD等5年磨一剑&#xff0c;一夜推翻Transformer 斯坦福UCSD等机构研究者提出的TTT方法&#xff0c;直接替代了注意力机制&#xff0c;语言模型方法从此或将彻底改变。这个模型通过对输入token进行梯…

在亚马逊云科技AWS上利用SageMaker机器学习模型平台搭建生成式AI应用(附Llama大模型部署和测试代码)

项目简介&#xff1a; 接下来&#xff0c;小李哥将会每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案&#xff0c;帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践&#xff0c;并应用到自己的日常工作里。本次介绍的是如何在Amazon …

802.11漫游流程简单解析与笔记_Part2_05_wpa_supplicant如何通过nl80211控制内核开始关联

最近在进行和802.11漫游有关的工作&#xff0c;需要对wpa_supplicant认证流程和漫游过程有更多的了解&#xff0c;所以通过阅读论文等方式&#xff0c;记录整理漫游相关知识。Part1将记录802.11漫游的基本流程、802.11R的基本流程、与认证和漫游都有关的三层秘钥基础。Part1将包…

Vue 3与Pinia:下一代状态管理的探索

引言 随着Vue 3的推出&#xff0c;Pinia应运而生&#xff0c;成为官方推荐的状态管理库&#xff0c;旨在替代Vuex。Pinia与Vuex相比&#xff0c;带来了以下主要区别和优势&#xff1a; 更简洁的API&#xff1a;Pinia的API设计更加直观和简洁&#xff0c;易于理解和使用。更好…

220V降5V芯片输出电压电流封装选型WT

220V降5V芯片输出电压电流封装选型WT 220V降5V恒压推荐&#xff1a;非隔离芯片选型及其应用方案 在考虑220V转低压应用方案时&#xff0c;以下非隔离芯片型号及其封装形式提供了不同的电压电流输出能力&#xff1a; 1. WT5101A&#xff08;SOT23-3封装&#xff09;适用于将2…