JAVA 获取网站资源

JAva资源网站大全 JAva资源网站大全 学习java 的初学者 应该会有用 立即下载

在工作中可能会遇到去某某网站上抓取相应数据的需求,有2种简单的工具可以使用:httpclient和Jsoup。
依赖:
httpclient:

	<dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.1</version>
        </dependency>

jsoup:

	<dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.8.3</version>
        </dependency>

一、httpclient发送请求获取

自定义了一个工具类,具体用法如下:

public class HttpClientUtil {

	/**
	 * get请求
	 * 
	 * @return
	 */
	public static String doGet(String url) {
		// 初始化一个httpclient
		CloseableHttpClient httpClient = HttpClients.createDefault();
		try {
			// 发送get请求
			HttpGet httpGet = new HttpGet(url);
			CloseableHttpResponse response = httpClient.execute(httpGet);
			/** 请求发送成功,并得到响应 **/
			if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
				/** 读取服务器返回过来的json字符串数据 **/
				// 4.处理结果,这里将结果返回为字符串
				String result = null;
				HttpEntity entity = response.getEntity();
				if (entity != null) {
					result = EntityUtils.toString(entity);
				}
				return result;
			}
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println("调用get请求出错:" + url);
		} finally {
			try {
				httpClient.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return null;
	}

	/**
	 * post请求(用于key-value格式的参数)
	 * 
	 * @param url
	 * @param params
	 * @return
	 */
	public static String doPost(String url, Map<String, Object> params) {
		BufferedReader in = null;
		// 初始化一个httpclient
		CloseableHttpClient httpClient = HttpClients.createDefault();
		try {
			// 实例化HTTP方法
			HttpPost request = new HttpPost();
			request.setURI(new URI(url));
			// 设置参数
			List<NameValuePair> nvps = new ArrayList<NameValuePair>();
			for (Iterator<String> iterator = params.keySet().iterator(); iterator.hasNext();) {
				String name = (String) iterator.next();
				String value = String.valueOf(params.get(name));
				nvps.add(new BasicNameValuePair(name, value));
			}
			request.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));
			CloseableHttpResponse response = httpClient.execute(request);
			int code = response.getStatusLine().getStatusCode();
			if (code == 200) { // 请求成功
				in = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "utf-8"));
				StringBuffer sb = new StringBuffer("");
				String line = "";
				String separator = System.getProperty("line.separator");
				while ((line = in.readLine()) != null) {
					sb.append(line + separator);
				}
				in.close();
				return sb.toString();
			} else {// 请求失败
				System.out.println("状态码:" + code);
				return null;
			}
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		} finally {
			try {
				httpClient.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * post请求(用于请求json格式的参数)
	 * 
	 * @param url
	 * @param params
	 * @return
	 */
	public static String doPost(String url, String params) throws Exception {
		CloseableHttpClient httpclient = HttpClients.createDefault();
		HttpPost httpPost = new HttpPost(url);// 创建httpPost
		httpPost.setHeader("Accept", "application/json");
		httpPost.setHeader("Content-Type", "application/json");
		StringEntity entity = new StringEntity(params, "UTF-8");
		httpPost.setEntity(entity);
		CloseableHttpResponse response = null;
		try {
			response = httpclient.execute(httpPost);
			StatusLine status = response.getStatusLine();
			int state = status.getStatusCode();
			if (state == HttpStatus.SC_OK) {
				HttpEntity responseEntity = response.getEntity();
				String jsonString = EntityUtils.toString(responseEntity);
				return jsonString;
			} else {
				System.out.println("请求返回:" + state + "(" + url + ")");
			}
		} finally {
			if (response != null) {
				try {
					response.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			try {
				httpclient.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return null;
	}

}

使用时只需要调用相应的方法,传入参数即可得到String类型的返回值(json格式),可以通过JSON工具来获取需要的内容。如:

String url = "www.baidu.com";
String res = HttpClientUtil.doGet(url);
JSONObject data= JSONObject.parseObject(res);
String value = data.getString("value");

使用Jsoup获取页面内容

使用jsoup可以将整个页面获取过来,找到自己要拿的资源位置,jsoup可以根据页面上的标签或者id等等来获取里面的内容。

        String url = "www.baidu.com";
        Document doc = Jsoup.connect(url).get();
        //根据id获取
        Element e = doc.getElementById("id");
        //根据标签获取
        Elements tag = e.getElementsByTag("tagName");
        //根据class获取
        Elements classes = e.getElementsByClass("className");
        //根据attribute获取
        Elements attribute = e.getElementsByAttribute("key");

关于jsoup的其他用法,可以参考:
http://www.open-open.com/jsoup/

java免费下载资源网站 java资源免费下载网站,里面是我找到的一些可以免费下载java方面的代码的开源网站。 立即下载

相关推荐

java有关的网站

NULL 博文链接:https://jiangzhenwei6.iteye.com/blog/975536

Java好资源网址推荐

Java好资源网址推荐

cnds123的专栏 20万+

企业门户新闻网站项目java web

企业门户新闻网系统,含后台。 代码来自实图书《战突击》:Java项目开发案例整合。仅供学习使用,禁止商业用途,如果觉得内容很好,请支持购买正版。

JavaWeb开发常用官网收集

JavaWeb开发常用官网收集 后端 技术 说明 官网 SpringBoot MVC框架 https://spring.io/projects/spring-boot SpringCloud 微服务框架 https://spring.io/projects/spring-cloud/ SpringSecurity 认证和授权框架 https://spring.io/projects/spring-security MyBatis-Plus ORM框架 https://mp.bao

lucas的博客 1920

java源码大全

这是本人自己在上海杰普培训的重要基础java的源代码 愿世界和平

ESP32+ST7789 LCD屏实战:5分钟搞定中文显示与图片渲染(附完整代码)

本文提供了一份详细的ESP32驱动ST7789 LCD屏幕的实战指南。通过清晰的SPI硬件连接说明、ESP-IDF框架下的初始化代码,以及图片渲染与中文字库构建的核心算法,帮助开发者快速实现中文显示与图片渲染功能,并附有完整的代码示例和性能优化技巧。

weixin_29189377的博客 438

selenium-java 实现QQ音乐自动登录获取cookie数据,爬取qq音乐会员资源和网易云音乐会员资源。实现任意网站的会员资源爬取

java+selenium-java 实现qq自动登录功能并获取cookie 下面是网易云音乐的qq自动功能演示,cookie信息在控制台中会打印出来。---->下一步就是利用这个cookie实现网站资源的爬取。 下面是qq音乐的自动登录 优快云的自动登录 源代码如下 import org.openqa.selenium.*; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.C

诗水人间 7207

如何利用Arcgis进行地统计学分析(三):空间插值方法选择与优化

本文深入探讨了在Arcgis中进行地统计学分析时,如何根据探索性数据分析(EDA)结果科学选择与优化空间插值方法。文章对比了IDW、RBF、克里金等主流方法的适用场景与核心参数,并通过实战案例详解了从数据诊断到模型调优的完整流程,强调结合半变异函数与趋势分析进行“对症下药”,以提升插值结果的精度与可靠性。

weixin_29281915的博客 120

Java 学习网站

链接

luoganttcc的博客 801

CISSP/CCSP证书到手后别松懈!保姆级维持攻略:CPE积分怎么攒?年费怎么交?

本文为CISSP/CCSP持证者提供详细的维持认证攻略,重点介绍如何高效积累CPE积分和避免年费缴纳中的常见问题。通过免费与付费资源结合的策略,帮助持证者轻松完成年度认证要求,同时利用认证创造职业价值。

weixin_30859423的博客 416

9、 量子支持向量机:从经典到量子的跨越

本文详细介绍了量子支持向量机(QSVM)的基本原理及其在PennyLane和Qiskit框架中的实现方法。从经典SVM的基础知识出发,逐步深入到量子领域的应用,包括如何定义量子核函数、与scikit-learn集成以及在模拟器和实际量子计算机上的训练和评估过程。最后通过表格和流程图总结了不同框架下的实现要点,为未来量子机器学习的研究提供了参考。

weixin_42433737的博客 184

java学习网站

学习网站一:https://xdclass.net/#/index

qq_25983579的博客 280

20、基于图神经网络的脱氢焓预测方法研究

本文研究了基于图神经网络(GNN)的液态有机氢载体(LOHC)材料脱氢焓预测方法。通过分析现有GNN方法的局限性,提出了一种新的聚合自节点表示(AWS)方法,并结合丰富的原子特征和集成学习策略,显著提高了预测性能。实验结果表明,AWS在脱氢焓预测和多个基准化学性质预测任务中均优于现有GNN方法。此外,基于分子结构的集成方法进一步提升了模型的鲁棒性和准确性。研究展示了该方法在筛选LOHC材料中的潜力,并为未来预测更多化学性质奠定了基础。

pp12345的博客 103

Java面试资源获取

面试资源获取

感谢阅读 1190

【Altium designer】BOM导出 Bill of Materials 如何自定义格式

【Altium designer】如何自定义BOM导出格式 我们用Excel做一个xx.xlt的2003的模版文件,取文件名为:AltiumDesiger PCB BOM Template.xlt 将AltiumDesiger PCB BOM Template.xlt文件存放在:AltiumDesiger 安装目录的Template文件夹内

夜半少年的博客 2717

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Java学习网站

http://www.weixueyuan.net/view/5981.html

weixin_45790826的博客 91

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

java项目之旅游资源网站ssm源码

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于。请联系风歌,文末附上联系信息。作者:风歌(风定落花生,歌声逐流水的风歌)个人简介:混迹在java圈十年有余,擅长Java、微信小程序、Python、Android等,大家有这一块的问题可以一起交流!callme:各类成品java毕设。javaweb,ssh,ssm,springboot等等项目框架,源码丰富,欢迎咨询。学习资料、程序开发、技术解答、代码讲解、文档报告,需要请看文末联系方式。

sinat_26552841的博客 1127

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

基于SSM旅游资源网站平台设计与实现设计与实现

Java语言介绍Java语言正式诞生于1995年,是由SUN公司开发研制的OAK语言发展而来的。Java语言继承了OAK语言可跨平台运行的特点,融合了面向对象编程的风格,JAVA以其独有的开放性、跨平台性和面向网络的交互性席卷全球,以其安全性、易用性和开发周期短的特点,迅速从最初的编程语言发展成为全球第一大软件开发平台.广受时下程序开发人员的好评。后来又为了丰富Java语言的用途,提高生产力,将它进行设计和改造,以满足更多地开发和应用场景。经过改造后,它可以满足移动端开发,桌面应用开发和企业级应用开发。

591

自学java的网站,怎样自学java

推荐适合小白学习java的网站,很全面很良心 先附上网站 http://how2j.cn?p=69502 1.网站页面清爽 页面整洁,可以随时看到自己的学习进度 2.清晰的学习路线图 有路线图,知道下一步要学什么,一步一步点亮这里很有成就感。 3.形象的例子和课后练习题便于理解 良心站长,图文视频代码一应俱全 这些全部可以免费获取 4.Java基础、框架、数据库、工具、面试题等等,站...

weixin_44092440的博客 7514

java 读取网络资源_关于java使用URLConnection获取网络资源大小及内容使用

前言jdk提供java.net包下面的URL类和URLConnection类实现获取网络资源信息,java.net.URL作为同一资源定位符,是指向互联网“资源”的指针,而java.net.URLConnection类代表程序和URL之间建立通信的链接通道。通过链接实例可对读取写入URL引用的网络资源。示例代码1.实现获取网站上图片资源大小及相关信息的实现代码如下:importjava.io.I...

weixin_34619335的博客 453

开发常用网站

bingfengshike的专栏 126

java网站资源

154

获取页面所有链接的方法

package com.shishike.susie.utility; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.IOException; import jav...

intelrain的博客 4688

java

http://www.cn-java.com

zhanyuan的专栏 474
上一篇: SQL Server 保存微信的表情到数据库时乱码处理
下一篇: shiro(一):springMVC与shiro整合,实现简单登录
Coolwindd
博客等级 码龄9年 20粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值