当前位置: 首页 > article >正文

实战二:网络爬虫

1.制造假数据

获取姓氏网址:百家姓_诗词_百度汉语

获取男生名字:男生有诗意的名字推荐(龙年男孩起名)

获取女生名字:2024年清新有诗意女孩名字取名(龙年女孩名字)

public class test1 {
    public static void main(String[] args) throws IOException {
        //1.定义变量记录网址
        String familyName = "https://hanyu.baidu.com/shici/detail?pid=0b2f26d4c0ddb3ee693fdb1137ee1b0d&from=kg0";
        String boyName = "http://www.haoming8.cn/baobao/10881.html";
        String girlName = "http://www.haoming8.cn/baobao/7641.html";
        //2.爬取数据,把网址上所有的数据拼接成一个字符串
        String FamilyName = webCrawler(familyName);
        String BoyName = webCrawler(boyName);
        String GirlName = webCrawler(girlName);
        //System.out.println(FamilyName);
        ArrayList<String> FamilyNameList = getData(FamilyName, "([\\u4e00-\\u9fa5]{4})(,|。)", 1);
        ArrayList<String> boyNameList = getData(BoyName, "([\\u4e00-\\u9fa5]{2})(、|。)", 1);
        ArrayList<String> girlNameList = getData(GirlName,"([\\u4e00-\\u9fa5]{2})( )", 1);
        System.out.println(FamilyNameList);
        System.out.println(boyNameList);
        System.out.println(girlNameList);
    }

    private static ArrayList<String> getData(String str, String regex, int index) {
        //1.创建集合存放数据
        ArrayList<String> list = new ArrayList<>();
        //2.按照正则表达式的规则,去获取数据
        Pattern pattern = Pattern.compile(regex);
        //按照pattern的规则,到str当中获取数据
        Matcher matcher = pattern.matcher(str);
        while(matcher.find()){
            list.add(matcher.group(index));
        }
        return list;
    }

    public static String webCrawler(String net) throws IOException {
        StringBuilder sb = new StringBuilder();
        //创建一个url对象
        URL url = new URL(net);
        URLConnection conn = url.openConnection();
        InputStreamReader isr = new InputStreamReader(conn.getInputStream());
        int ch;
        while ((ch = isr.read()) != -1) {
            sb.append((char) ch);
        }
        isr.close();
        return sb.toString();
    }
}


http://www.kler.cn/news/364186.html

相关文章:

  • Android 图片相识度比较(pHash)
  • openrtp 音视频时间戳问题
  • 【机器学习】VQ-VAE(Vector Quantized Variational Autoencoder)
  • 高薪、高含金量、高性价比的“三高”证书——PMP证书
  • Bytebase 3.0.0 - AI 助手全面升级
  • 不同企业规模,外贸财务系统如何灵活应对
  • vue npm run ...时 报错-系统找不到指定的路径
  • 【计网】深入理解网络通信:端口号、Socket编程及编程接口
  • XJ01、消费金融|互联网消费金融行业基本概述
  • 【人工智能-初级】第7章 聚类算法K-Means:理论讲解与代码示例
  • 使用STM32实现对电机的PID控制
  • 爬虫之数据解析2
  • 京准电钟解读:NTP网络对时服务器助力厂区改造方案
  • OpenCVSharp在医学影像Dicom上的一些应用
  • Python异步编程:使用`asyncio`和`aiofiles`进行高效的文件批量写入
  • 后端消息推送方案方案(轮询,长轮询,websocket,SSE)
  • 163页PPT 丨IBM业务架构咨询:制造业核心业务流程框架及解决方案
  • 数据分析流程详解:从数据收集到决策支持的完整指南
  • Easy Excel合并单元格情况简单导入导出
  • Aatrox-Bert-VITS2部署指南
  • 疯狂Spring Boot讲义[推荐1]
  • AcWing1027
  • 前端方案:播放的视频加水印或者文字最佳实践
  • web前端练习
  • 期权懂|2024年期权最新止损策略有哪些?
  • 统一过程和敏捷过程