前言:

时下互联网第一波的浪潮已消逝,随着而来的基于万千数据的物联网时代,因而数据成为企业的重要战略资源之一。基于数据抓取技术,本文介绍了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
相关文章:
如何在阿里云虚拟服务器快速搭建网站?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
建站之星Pro快速搭建教程:模板选择与功能配置指南
如何解决VPS建站LNMP环境配置常见问题?
高防服务器租用如何选择配置与防御等级?
岳西云建站教程与模板下载_一站式快速建站系统操作指南
建站三合一如何选?哪家性价比更高?
常州企业建站如何选择最佳模板?
建站主机如何选?高性价比方案全解析
广州建站公司哪家好?十大优质服务商推荐
建站之星2.7模板快速切换与批量管理功能操作指南
定制建站价位费用解析与套餐推荐全攻略
平台云上自助建站如何快速打造专业网站?
C++如何使用std::optional?(处理可选值)
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
香港服务器选型指南:免备案配置与高效建站方案解析
如何通过.red域名打造高辨识度品牌网站?
建站之星如何保障用户数据免受黑客入侵?
建站之星导航菜单设置与功能模块配置全攻略
开心动漫网站制作软件下载,十分开心动画为何停播?
IOS倒计时设置UIButton标题title的抖动问题
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
已有域名建站全流程解析:网站搭建步骤与建站工具选择
音乐网站服务器如何优化API响应速度?
简单实现Android文件上传
长沙企业网站制作哪家好,长沙水业集团官方网站?
网站制作模板下载什么软件,ppt模板免费下载网站?
如何配置IIS站点权限与局域网访问?
b2c电商网站制作流程,b2c水平综合的电商平台?
,交易猫的商品怎么发布到网站上去?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
建站之星24小时客服电话如何获取?
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
如何挑选最适合建站的高性能VPS主机?
如何有效防御Web建站篡改攻击?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
建站之星如何快速更换网站模板?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
在线教育网站制作平台,山西立德教育官网?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
郑州企业网站制作公司,郑州招聘网站有哪些?
如何在IIS中配置站点IP、端口及主机头?
如何在云主机上快速搭建多站点网站?
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
怀化网站制作公司,怀化新生儿上户网上办理流程?
*请认真填写需求信息,我们会在24小时内与您取得联系。