java利用url实现网页内容的抓取
发布时间 - 2026-01-11 00:08:17 点击率:次闲来无事,刚学会把git部署到远程服务器,没事做,所以简单做了一个抓取网页信息的小工具,里面的一些数值如果设成参数的话可能扩展性能会更好!希望这是一个好的开始把,也让我对字符串的读取掌握的更加熟练了,值得注意的是JAVA1.8 里面在使用String拼接字符串的时候,会自动把你要拼接的字符串用StringBulider来处理,大大优化了String 的性能,闲话不多说,show my XXX code~

运行效果:
首先打开百度百科,搜索词条,比如“演员”,再按F12查看源码
然后抓取你想要的标签,注入LinkedHashMap里面就ok了,很简单是吧!看看代码罗
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.*;
/**
* Created by chunmiao on 17-3-10.
*/
public class ReadBaiduSearch {
//储存返回结果
private LinkedHashMap<String,String> mapOfBaike;
//获取搜索信息
public LinkedHashMap<String,String> getInfomationOfBaike(String infomationWords) throws IOException {
mapOfBaike = getResult(infomationWords);
return mapOfBaike;
}
//通过网络链接获取信息
private static LinkedHashMap<String, String> getResult(String keywords) throws IOException {
//搜索的url
String keyUrl = "http://baike.baidu.com/search?word=" + keywords;
//搜索词条的节点
String startNode = "<dl class=\"search-list\">";
//词条的链接关键字
String keyOfHref = "href=\"";
//词条的标题关键字
String keyOfTitle = "target=\"_blank\">";
String endNode = "</dl>";
boolean isNode = false;
String title;
String href;
String rLine;
LinkedHashMap<String,String> keyMap = new LinkedHashMap<String,String>();
//开始网络请求
URL url = new URL(keyUrl);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
InputStreamReader inputStreamReader = new InputStreamReader(urlConnection.getInputStream(),"utf-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
//读取网页内容
while ((rLine = bufferedReader.readLine()) != null){
//判断目标节点是否出现
if(rLine.contains(startNode)){
isNode = true;
}
//若目标节点出现,则开始抓取数据
if (isNode){
//若目标结束节点出现,则结束读取,节省读取时间
if (rLine.contains(endNode)) {
//关闭读取流
bufferedReader.close();
inputStreamReader.close();
break;
}
//若值为空则不读取
if (((title = getName(rLine,keyOfTitle)) != "") && ((href = getHref(rLine,keyOfHref)) != "")){
keyMap.put(title,href);
}
}
}
return keyMap;
}
//获取词条对应的url
private static String getHref(String rLine,String keyOfHref){
String baikeUrl = "http://baike.baidu.com";
String result = "";
if(rLine.contains(keyOfHref)){
//获取url
for (int j = rLine.indexOf(keyOfHref) + keyOfHref.length();j < rLine.length()&&(rLine.charAt(j) != '\"');j ++){
result += rLine.charAt(j);
}
//获取的url中可能不含baikeUrl,如果没有则在头部添加一个
if(!result.contains(baikeUrl)){
result = baikeUrl + result;
}
}
return result;
}
//获取词条对应的名称
private static String getName(String rLine,String keyOfTitle){
String result = "";
//获取标题内容
if(rLine.contains(keyOfTitle)){
result = rLine.substring(rLine.indexOf(keyOfTitle) + keyOfTitle.length(),rLine.length());
//将标题中的内容含有的标签去掉
result = result.replaceAll("<em>|</em>|</a>|<a>","");
}
return result;
}
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# java实现网页数据抓取
# java实现网页内容抓取
# url抓取工具
# JavaWeb项目打开网页出现Session Error的异常解决方案
# java通过Jsoup爬取网页过程详解
# 详解java实现简单扫码登录功能(模仿微信网页版扫码)
# java调用微信接口实现网页分享小功能
# Java实现微信网页授权的示例代码
# Java实现的简单网页截屏功能示例
# 详解JAVA抓取网页的图片
# JAVA利用正则表达式抓取网站图片
# Java导出网页表格Excel过程详解
# 的是
# 无事
# 你要
# 我对
# 这是一个
# 很简单
# 如果没有
# 不含
# 会把
# 多说
# 也让
# 则在
# 你想要
# 值为
# 再按
# 小工具
# 闲来
# HttpURLConnection
# infomationWords
# getInfomationOfBaike
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
iOS UIView常见属性方法小结
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
Windows Hello人脸识别突然无法使用
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
nodejs redis 发布订阅机制封装实现方法及实例代码
在线教育网站制作平台,山西立德教育官网?
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
Laravel如何配置和使用缓存?(Redis代码示例)
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
如何快速查询网址的建站时间与历史轨迹?
EditPlus中的正则表达式 实战(2)
音响网站制作视频教程,隆霸音响官方网站?
Java类加载基本过程详细介绍
Laravel如何自定义错误页面(404, 500)?(代码示例)
JS弹性运动实现方法分析
微信小程序 HTTPS报错整理常见问题及解决方案
浅析上传头像示例及其注意事项
如何在Ubuntu系统下快速搭建WordPress个人网站?
Python面向对象测试方法_mock解析【教程】
Laravel如何使用Livewire构建动态组件?(入门代码)
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
Python正则表达式进阶教程_复杂匹配与分组替换解析
EditPlus中的正则表达式 实战(4)
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
什么是javascript作用域_全局和局部作用域有什么区别?
Laravel如何创建自定义中间件?(Middleware代码示例)
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
Claude怎样写约束型提示词_Claude约束提示词写法【教程】
如何在万网自助建站中设置域名及备案?
北京网站制作公司哪家好一点,北京租房网站有哪些?
长沙做网站要多少钱,长沙国安网络怎么样?
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
nginx修改上传文件大小限制的方法
如何自定义建站之星网站的导航菜单样式?
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
微信小程序 input输入框控件详解及实例(多种示例)
如何选择PHP开源工具快速搭建网站?
android nfc常用标签读取总结
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
php 三元运算符实例详细介绍

