当前位置: 首页 > 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;}}

 输出结果:


 总结

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

相关文章:

  • 【OpenHarmony】TypeScript 语法 ③ ( 条件语句 | if else 语句 | switch case 语句 )
  • [数据集][目标检测]老鼠检测数据集VOC+YOLO格式4107张1类别
  • 反激电源压敏电阻设计
  • Python Config 用法:探索配置文件的艺术
  • 基于 IP 的 DDOS 攻击实验
  • 3.基础光照
  • 进程间通信(27000字超详解)
  • 领域建模(系统操作复习)
  • Prime1 - 提权的另一种解法,彻底搞懂OpenSSL解密渗透提权,超强思路版。
  • leetcode155. 最小栈
  • Photoshop 首选项设置建议
  • React框架的快速入门
  • Java 获取和修改期日与时间的各种操作方法
  • Flutter 中的 CustomMultiChildLayout 小部件:全面指南
  • mysql的inner join 和left join区别
  • 【css3】浏览器内核及其兼容性
  • 345-反转字符串中的元音字母
  • HTTP那些事
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Linux gpio口使用方法
  • Median of Two Sorted Arrays
  • Python学习笔记 字符串拼接
  • unity如何实现一个固定宽度的orthagraphic相机
  • vue的全局变量和全局拦截请求器
  • Vue小说阅读器(仿追书神器)
  • 开源SQL-on-Hadoop系统一览
  • 类orAPI - 收藏集 - 掘金
  • 利用DataURL技术在网页上显示图片
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 如何优雅地使用 Sublime Text
  • 我的业余项目总结
  • 正则表达式小结
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #数据结构 笔记一
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (四)图像的%2线性拉伸
  • (一)WLAN定义和基本架构转
  • (转)h264中avc和flv数据的解析
  • (转)iOS字体
  • .describe() python_Python-Win32com-Excel
  • .net CHARTING图表控件下载地址
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .Net core 6.0 升8.0
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .NET8 动态添加定时任务(CRON Expression, Whatever)
  • .NET编程C#线程之旅:十种开启线程的方式以及各自使用场景和优缺点
  • .NET开发不可不知、不可不用的辅助类(一)
  • [ SNOI 2013 ] Quare
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [Angular] 笔记 20:NgContent