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.pswp.cn/diannao/44025.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44025.shtml
英文地址,請注明出處:http://en.pswp.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…