详解Java实现多种方式的http数据抓取
发布时间 - 2026-01-10 22:09:04 点击率:次前言:

时下互联网第一波的浪潮已消逝,随着而来的基于万千数据的物联网时代,因而数据成为企业的重要战略资源之一。基于数据抓取技术,本文介绍了java相关抓取工具,并附上demo源码供感兴趣的朋友测试!
1)JDK自带HTTP连接,获取页面或Json
2) JDK自带URL连接,获取页面或Json
3)HttpClient Get工具,获取页面或Json
4)commons-io工具,获取页面或Json
5) Jsoup工具(通常用于html字段解析),获取页面,非Json返回格式】
--------------------------------------------------------------------------------
完整代码:
package com.yeezhao.common.http;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.io.IOUtils;
import org.jsoup.Jsoup;
/**
* http工具对比
*
* @author Administrator -> junhong
*
* 2016年12月27日
*/
public class HttpFetchUtil {
/**
* 获取访问的状态码
* @param request
* @return
* @throws Exception
*/
public static int getResponseCode(String request) throws Exception {
URL url = new URL(request);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
return conn.getResponseCode();
}
/**
* 1)JDK自带HTTP连接,获取页面或Json
* @param request
* @param charset
* @return
* @throws Exception
*/
public static String JDKFetch(String request, String charset) throws Exception {
URL url = new URL(request);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//模拟浏览器参数
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36"
+ " (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36");
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
InputStream input = conn.getInputStream();
StringBuffer sb = new StringBuffer();
BufferedReader reader = new BufferedReader(new InputStreamReader(input, charset));
String s;
while ((s = reader.readLine()) != null) {
sb.append(s + "\n");
}
input.close();
conn.disconnect();
return sb.toString();
}
return "";
}
/**
* 2) JDK自带URL连接,获取页面或Json
* @param request
* @param charset
* @return
* @throws Exception
*/
public static String URLFetch(String request, String charset) throws Exception {
URL url = new URL(request);
return IOUtils.toString(url.openStream());
}
/**
* 3)HttpClient Get工具,获取页面或Json
* @param url
* @param charset
* @return
* @throws Exception
*/
public static String httpClientFetch(String url, String charset) throws Exception {
// GET
HttpClient httpClient = new HttpClient();
httpClient.getParams().setContentCharset(charset);
HttpMethod method = new GetMethod(url);
httpClient.executeMethod(method);
return method.getResponseBodyAsString();
}
/**
* 4)commons-io工具,获取页面或Json
* @param url
* @param charset
* @return
* @throws Exception
*/
public static String commonsIOFetch(String url, String charset) throws Exception {
return IOUtils.toString(new URL(url), charset);
}
/**
* 5) Jsoup工具(通常用于html字段解析),获取页面,非Json返回格式
* @param url
* @return
* @throws Exception
*/
public static String jsoupFetch(String url) throws Exception {
return Jsoup.parse(new URL(url), 2 * 1000).html();
}
}
测试代码:
package com.yeezhao.common.http;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* 测试类
* 3个测试链接:
* 1)百科网页
* 2)浏览器模拟获取接口数据
* 3)获取普通接口数据
* @author Administrator -> junhong
*
* 2016年12月27日
*/
public class HttpFetchUtilTest {
String seeds[] = {"http://baike.baidu.com/view/1.htm","http://m.ximalaya.com/tracks/26096131.json","http://remyapi.yeezhao.com/api/query?wd=%E5%91%A8%E6%98%9F%E9%A9%B0%E7%9A%84%E7%94%B5%E5%BD%B1"};
final static String DEFAULT_CHARSET = "UTF-8";
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
System.out.println("--- down ---");
}
@Test
public void testGetResponseCode() throws Exception{
for(String seed:seeds){
int responseCode = HttpFetchUtil.getResponseCode(seed);
System.out.println("ret="+responseCode);
}
}
@Test
public void testJDKFetch() throws Exception{
for(String seed:seeds){
String ret = HttpFetchUtil.JDKFetch(seed, DEFAULT_CHARSET);
System.out.println("ret="+ret);
}
}
@Test
public void testURLFetch() throws Exception{
for(String seed:seeds){
String ret = HttpFetchUtil.URLFetch(seed, DEFAULT_CHARSET);
System.out.println("ret="+ret);
}
}
@Test
public void testHttpClientFetch()throws Exception {
for(String seed:seeds){
String ret = HttpFetchUtil.httpClientFetch(seed, DEFAULT_CHARSET);
System.out.println("ret="+ret);
}
}
@Test
public void testCommonsIOFetch()throws Exception {
for(String seed:seeds){
String ret = HttpFetchUtil.commonsIOFetch(seed, DEFAULT_CHARSET);
System.out.println("ret="+ret);
}
}
@Test
public void testJsoupFetch() throws Exception{
for(String seed:seeds){
String ret = HttpFetchUtil.jsoupFetch(seed);
System.out.println("ret="+ret);
}
}
}
附:相关jar依赖
... <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.7.3</version> </dependency> <dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> ...
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# java抓取http数据包
# java
# 抓取网页数据
# java实现网页内容抓取
# java发起http请求获取返回的Json对象方法
# JAVA发送http get/post请求
# 调用http接口、方法详解
# JAVA发送HTTP请求
# 返回HTTP响应内容
# 应用及实例代码
# Java实现调用对方http接口得到返回数据
# 自带
# 互联网
# 而来
# 感兴趣
# 时下
# 大家多多
# 第一波
# getResponseCode
# String
# int
# static
# url
# openConnection
# charset
# JDKFetch
# conn
# Exception
# public
# HttpFetchUtil
# return
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
高防服务器如何保障网站安全无虞?
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
重庆市网站制作公司,重庆招聘网站哪个好?
Linux安全能力提升路径_长期防护思维说明【指导】
如何在IIS中新建站点并配置端口与IP地址?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
如何在Ubuntu系统下快速搭建WordPress个人网站?
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
Laravel用户密码怎么加密_Laravel Hash门面使用教程
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
如何用腾讯建站主机快速创建免费网站?
移动端脚本框架Hammer.js
做企业网站制作流程,企业网站制作基本流程有哪些?
Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件
Laravel如何保护应用免受CSRF攻击?(原理和示例)
Laravel如何使用Sanctum进行API认证?(SPA实战)
想要更高端的建设网站,这些原则一定要坚持!
如何在IIS7上新建站点并设置安全权限?
微信小程序 配置文件详细介绍
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
Swift中swift中的switch 语句
使用C语言编写圣诞表白程序
微信小程序 scroll-view组件实现列表页实例代码
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
如何在 React 中条件性地遍历数组并渲染元素
如何快速重置建站主机并恢复默认配置?
如何基于云服务器快速搭建网站及云盘系统?
jquery插件bootstrapValidator表单验证详解
如何在建站宝盒中设置产品搜索功能?
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例
如何快速搭建高效简练网站?
浅谈javascript alert和confirm的美化
Laravel安装步骤详细教程_Laravel环境搭建指南
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
php结合redis实现高并发下的抢购、秒杀功能的实例
node.js报错:Cannot find module 'ejs'的解决办法
如何快速上传建站程序避免常见错误?
jQuery中的100个技巧汇总
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解

