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

java web爬虫

目录

读取本地文件

从网站读取文件 

java爬虫 

 总结


读取本地文件

import java.io.File;
import java.io.PrintWriter;
import java.util.Scanner;public class ReplaceText {public static void main() throws Exception{File file = new File("basic\\test.txt");if(!file.exists()) {System.exit(0);}File targetFile = new File("basic\\target.txt");if(targetFile.exists()) {System.exit(1);}String oldString = "case";String newString = "CASE";try(Scanner input = new Scanner(file);PrintWriter output = new PrintWriter(targetFile);) {while (input.hasNext()) {String src = input.nextLine();String dist = src.replaceAll(oldString, newString);output.println(dist);}input.close();output.close();}}
}

输出结果: 

 

从网站读取文件 

import java.io.IOException;
import java.util.Scanner;public class ReadFileFromUrl {public static void main() {System.out.println("Input the URL:");String addr = new Scanner(System.in).next();try {java.net.URL url = new java.net.URL(addr);int count = 0;Scanner input = new Scanner(url.openStream());while (input.hasNext()) {count = count + input.nextLine().length();}System.out.println("The website has " + count + " charactors.");} catch (java.net.MalformedURLException e) {// TODO: handle exceptionSystem.out.println("Invalid url!");} catch (IOException e) {System.out.println("No such file!");}}
}

 输出结果:

java爬虫 

package crawler;import java.util.ArrayList;
import java.util.Scanner;public class MyCrawler{public static void main() {String addr = new Scanner(System.in).next();crawler(addr);}private static void crawler(String url) {ArrayList<String> pendingUrls = new ArrayList<>();ArrayList<String> traversedUrls = new ArrayList<>();pendingUrls.add(url);while (!pendingUrls.isEmpty() && traversedUrls.size() < 100) {String urlString = pendingUrls.remove(0);if (!traversedUrls.contains(urlString)) {traversedUrls.add(urlString);System.out.println("crawl the website: " + urlString);}for(String s: getSubUrl(url)) {if(!traversedUrls.contains(s))pendingUrls.add(s);}}}private static ArrayList<String> getSubUrl(String urlString) {ArrayList<String> list = new ArrayList<>();try {java.net.URL url = new java.net.URL(urlString);int count = 0;Scanner input = new Scanner(url.openStream());while (input.hasNext()) {String line = input.nextLine();count = line.indexOf("http:", count);while (count > 0) {int endIndex = line.indexOf("\"", count);if (endIndex > 0) {list.add(line.substring(count, endIndex));count = line.indexOf("http:", endIndex);} else {count = -1;}}}} catch (Exception e) {// TODO: handle exceptionSystem.out.println("Error : " + e.getMessage());}return list;}}

 输出结果:


 总结

本文从读取本地文件,读取网站文件和爬虫,一步一步地实现简单的网络爬虫功能。

相关文章:

java web爬虫

目录 读取本地文件 从网站读取文件 java爬虫 总结 读取本地文件 import java.io.File; import java.io.PrintWriter; import java.util.Scanner;public class ReplaceText {public static void main() throws Exception{File file new File("basic\\test.txt"…...

MySQL开发教程和具体应用案例

一、MySQL开发教程 初识数据库 定义:数据仓库,安装在操作系统之上,用于存储和管理数据。 分类:关系型数据库(如MySQL、Oracle、SQL Server)和非关系型数据库(如Redis、MongoDB)。 SQL:结构化查询语言,用于管理和操作关系型数据库。 操作数据库 创建、修改、删除…...

QT C++ 模型视图结构 QTableView 简单例子

在Qt中&#xff0c;MVC模式被广泛使用于各种用户界面框架中&#xff0c;包括Qt的模型视图结构。Qt的模型视图结构是基于MVC模式设计的&#xff0c;其中包括了Model、View和Delegate三个部分。 QTableView是Qt模型视图结构中的一种视图&#xff0c;它用于以表格形式显示数据。 …...

2024年3月电子学会Python编程等级考试(四级)真题题库

2024年3月青少年软件编程Python等级考试&#xff08;四级&#xff09;真题试卷 题目总数&#xff1a;38 总分数&#xff1a;100 选择题 第 1 题 单选题 运行如下Python代码&#xff0c;若输入整数3&#xff0c;则最终输出的结果为&#xff1f;&#xff08; &#xff…...

深入分析 Android BroadcastReceiver (一)

文章目录 深入分析 Android BroadcastReceiver (一)1. Android BroadcastReceiver 设计说明1.1 BroadcastReceiver 的主要用途 2. BroadcastReceiver 的工作机制2.1 注册 BroadcastReceiver2.1.1 静态注册2.1.2 动态注册 3. BroadcastReceiver 的生命周期4. 实现和使用 Broadca…...

2024医美如何做抖音医美抖音号,本地团购、短视频直播双ip爆品引流,实操落地课

课程下载&#xff1a;https://download.csdn.net/download/m0_66047725/89307619 更多资源下载&#xff1a;关注我。 课程内容&#xff1a; 01-0-序.mp4 02-01-账号定位.mp4 03-02-误区.mp4 04-03-五件套.mp4 05-04-文案怎么来.mp4 06-05-对标怎么弄.mp4 07-06-人设怎…...

Debian常用指令指南:高效管理你的Linux系统

Debian作为Linux发行版中的佼佼者&#xff0c;以其稳定性和安全性而闻名。掌握Debian的常用指令对于系统管理员和开发人员来说至关重要。本文将介绍一系列Debian系统中的常用指令&#xff0c;帮助你高效地管理和维护你的系统。喜欢的话记得一键三连哦&#xff0c;方便找到它。 …...

什么是DELINS交货指示?

DELINS 是指 Delivery Instruction&#xff08;交货指示&#xff09;报文&#xff0c;用于在供应链管理中传递交货指令和相关信息。该报文用于在供应链中的不同合作伙伴之间交换关于交货的详细信息。 DELINS 报文的主要功能 交货指示&#xff1a;传达具体的交货指令&#xff…...

基于Open3D的点云处理24-ICP匹配cuda加速

参考:docs/jupyter/t_pipelines/t_icp_registration.ipynb 完整测试用例: import open3d as o3d import open3d.core as o3cif o3d.__DEVICE_API__ == cuda:import open3d.cuda.pybind.t.pipelines.registration as treg else:...

UE_地编教程_创建地形洞材质

个人学习笔记&#xff0c;不喜勿喷。侵权立删&#xff01; 使用地形洞材质来遮罩地形上特定位置的可视性和碰撞。如要在山脉侧面创建进入洞穴的入口&#xff0c;此操作将非常有用。可使用地形材质和地形洞材质的相同材质&#xff0c;但注意&#xff1a;对比不使用不透明蒙版的…...

「C系列」C 基本语法

文章目录 一、C 基本语法1. **程序结构**2. **数据类型**3. **变量声明**4. **运算符**6. **函数**7. **指针**8. **数组**9. **结构体和联合体**10. **预处理指令**11. **内存管理** 二、C 关键字1. 整体概览2. 具体关键字数据类型关键字控制流关键字其他关键字C11新增关键字总…...

java期末细节知识整理(一)

1.java程序的执行过程&#xff1a;先编译后解释。也就是我们在idea写的文件叫做java源文件&#xff08;.java结尾的文件&#xff09;&#xff0c;经过编译器会生成字节码文件&#xff08;.class结尾的文件&#xff09;&#xff0c;再通过解释器进行实现 2.栈用来存储引用类型的…...

GIt快速入门(一文学会使用Git)

GIt快速入门 文章目录 GIt快速入门一、为什么要学习Git二、Git的安装1.安装Git2.下载GUI 三、Git的概念1、版本控制2、集中式控制3、分布式控制4、多人协作开发1.并行开发2.分支管理3.冲突解决4.代码审查5.分布式特性 四、Git客户端操作1.界面介绍2.提交操作3.创建分支4.合并分…...

电机测试方法的介绍与功能实现(T测试方法)

目录 概述 1 理论介绍 2 实现原理 2.1 旋转式编码器原理 2.2 系统实现框图 2.3 测速原理 2.4 计算速度值 3 STM32Cube配置项目 3.1 软件版本信息 3.2 配置项目 4 代码实现 4.1 电机速度控制 4.2 速度计算函数 4.3 功能实现 5 测试 概述 本文主要介绍测试电机速…...

多线程和多进程的快速入门

多线程和多进程的快速入门 学习自&#xff1a;莫烦Python www.mofanpy.com Threading - 多线程运算python程序 ​ 多线程的简单理解&#xff1a;把数据分成很多段&#xff0c;将每一段数据放入一个线程&#xff0c;将所有的线程同时开始&#xff0c;大大的节省了运算时间。相…...

【TensorFlow深度学习】经典卷积网络架构回顾与分析

经典卷积网络架构回顾与分析 经典卷积网络架构回顾与分析&#xff1a;从AlexNet到ResNet、VGGLeNet、ResNet、DenseNet的深度探索AlexNet ——深度学习的破冰点火VGGNet — 简洁的美ResNet — 深持续深度的秘钥DenseNet — 密集大成塔实战代码示例&#xff1a;ResNet-50模型结语…...

Salesforce推出Einstein 1 Studio:用于自定义Einstein Copilot并将人工智能嵌入任何CRM应用程序的低代码人工智能工具

一、关键要点 1. Salesforce管理员和开发人员现在可以在每个Salesforce应用程序和工作流程中构建、定制和嵌入人工智能&#xff0c;包括Einstein Copilot。 2. Einstein 1 Studio与数据云深度集成&#xff0c;通过对客户数据和元数据的全面理解&#xff0c;解锁并统一被捕获的…...

点赋科技:建设智能饮品高地,打造数字化产业先锋

在当今数字化时代的浪潮中&#xff0c;点赋科技以其敏锐的洞察力和卓越的创新能力&#xff0c;致力于建设智能饮品高地&#xff0c;打造数字化产业先锋。 点赋深知智能饮品机对于推动社会进步和满足人们日益增长的需求的重要性。因此&#xff0c;他们投入大量资源和精力&#x…...

ORACLE RAC的一些基本理论知识

一 . Oracle RAC 的发展历程 1. Oracle Parallel Server (OPS) 早期阶段&#xff1a;Oracle 6 和 7 Oracle Parallel Server&#xff08;OPS&#xff09;是 Oracle RAC 的前身。 通过多个实例并行访问同一个数据库来提高性能。 共享磁盘架构&#xff0c;利用分布式锁管理&am…...

CMake的作用域:public/private/interface

在 CMake 中&#xff0c;public、private和 interface是用来指定目标属性的作用域的关键字&#xff0c;这三个有什么区别呢&#xff1f;这些关键字用于控制属性的可见性和传递性&#xff0c;影响了目标之间的依赖关系和属性传递。 public 如果在一个目标上使用 public关键字时…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...