关于用Java进行爬虫的资料网上实在少之又少,但作为以一名对Java刚刚初窥门径建立好兴趣的学生怎么能静得下心用新学的Python去写,毕竟Java是世界上最好的语言嘛 (狗头)

关于Java爬虫最受欢迎的一个框架Jsoup常常搭配HttpClient来使用,因为Jsoup.connect(url)下载网页没有多次重试的功能,所以我们更多的使用HttpClient来进行网页的下载,而Jsoup则更多的用来解析网页。毕竟专业的事还得专业的人来干!

对于下载网页我们没必要每次都花费大把的时间去写,直接写一个工具类,在Jsoup中直接调用即可

关于HttpClient

关于HttpClient主要有两个版本

  • org.apache.http.client.HttpClient `3.X`

  • org.apache.commons.httpClient.HttpClient `4.X`

相比较4.X的功能更加丰富简洁,但3.x也不差,下面拿3.x举例

HttpClient实例代码

package com.Jsoup;import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;import java.io.IOException;//下载网页工具,返回html对象
public class HttpUtil {static String fileName = null;static String content;/*** 获取网页主体内容,完成HttpClient的下载任务,剩下的交给Jsoup来解析* @param url URL地址* @param charset 设置编码格式* @return 返回网页 html内容 * @throws IOException 抛出IO异常*/public static String getContent(String url,String charset) throws IOException {//1.创建客户端对象并设置参数HttpClient httpClient = new HttpClient();//设置 Http 超时httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(2000);//2.生成GetMethod对象并设置参数GetMethod getMethod = new GetMethod(url);//设置 Get 请求超时getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT,2000);getMethod.getParams().setContentCharset(charset);//设置请求重试处理-这是使用HttpClient下载网页而不用Jsoup的原因getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,new DefaultHttpMethodRetryHandler());//设置头信息//getMethod.getParams().setParameter(HttpMethodParams.USER_AGENT,"需要添加的代理信息");//3.执行 Get 请求int statusCode = httpClient.executeMethod(getMethod);//判断访问的状态码if (statusCode != HttpStatus.SC_OK){System.err.println("请求失败: "+getMethod.getStatusLine());fileName = null;}else {//4.处理 HTTP 响应内容//获得响应体内容content = getMethod.getResponseBodyAsString();}//5.释放连接getMethod.releaseConnection();//输出到控制台//System.out.println(content);return content;}}

注意:这里的用户代理(User-Agent)需要按需求设置,后期可能需要设置大量的代理,我们将设置一个Use-Agent库,每次执行爬虫任务将从中随机选取一个,防止被网站封锁

Jsoup代码

Jsoup实例已经放到下一篇文章了,点击这里跳转

http://t.csdn.cn/JM6yL

public class JsoupDemo01 {public static void main(String[] args) throws IOException {String url = "https://xxxx.com";String html =  HttpUtil.getContent(url,"UTF-8");//Jsoup.parse(String html)可以根据html文档来解析Document doc = Jsoup.parse(html);//具体解析网页不做展示,已更新}
}

【已更新实例】Java网络爬虫-HttpClient工具类相关推荐

  1. Java网络爬虫学习记录(请求基础篇)

    目录 个人实验遇见错误集: 一.javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX ...

  2. java 网络爬虫 正则表达式_【干货】Java网络爬虫基础知识

    原标题:[干货]Java网络爬虫基础知识 引言 Java 网络爬虫具有很好的扩展性可伸缩性,其是目前搜索引擎开发的重要组成部分.例如,著名的网络爬虫工具 Nutch 便是采用 Java 开发,该工具以 ...

  3. 第三十六期:学 Java 网络爬虫,需要哪些基础知识?

    说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少.有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做网络爬 ...

  4. Java网络爬虫该如何学习

    文章目录 引言 怎么入门网络爬虫 课程特色 学完本课程能收获什么 引言 互联网以及移动技术的飞速发展,使得全球数据量呈现前所未有的爆炸式增长态势.例如,用户在互联网上的搜索数据.交易数据.评论数据.社 ...

  5. Java网络爬虫基础概述

    Java网络爬虫基础 Http基础 网络资源一般是Web服务器上的一些各种格式的文件,通过Http协议传输互联网上的数据. 在Java中,通常通过URL标出网络资源的位置和Web服务器建立链接,获取网 ...

  6. Java网络爬虫--一步步使用Java网络爬虫技术实现豆瓣读书Top250数据的爬取,并插入数据库

    一步步使用Java网络爬虫技术实现豆瓣读书Top250数据的爬取,并插入数据库 目录 一步步使用Java网络爬虫技术实现豆瓣读书Top250数据的爬取,并插入数据库 第一步:创建项目,搭建项目结构 p ...

  7. python网络爬虫、Java 网络爬虫,哪个更好?

    说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少.有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做网络爬 ...

  8. 学 Java 网络爬虫,需要哪些基础知识?

    说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少.有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做网络爬 ...

  9. Java网络爬虫入门:第01课:网络爬虫原理

    引言 随着互联网的迅速发展,网络资源越来越丰富,信息需求者如何从网络中抽取信息变得至关重要.目前,有效的获取网络数据资源的重要方式,便是网络爬虫技术.简单的理解,比如您对百度贴吧的一个帖子内容特别感兴 ...

最新文章

  1. 浅谈Javascript事件模拟
  2. Tomcat6.0的JNDI使用方法(连接池)
  3. [DruidAbstractDataSource] maxIdle is deprecated
  4. 【Python-ML】神经网络激励函数-双曲正切(hyperbolic tangent,tanh)函数
  5. java中写入文件的方法
  6. Spring Cloud Gateway的全局异常处理
  7. report things that go wrong
  8. python多线程实现同步的方式_深入解析Python中的线程同步方法
  9. WCF从理论到实践(4):路在何方
  10. ubuntu远程连接windows工具rdesktop
  11. C#调用存储过程详解
  12. h5 html被缓存,【Web前端问题】html5离线缓存,不能被缓存问题
  13. Android Google Map APIKey申请
  14. 运用li元素进行斑马色显示
  15. C#语言-04.OOP基础
  16. 【路径规划】基于matlab蚁群和粒子群算法双机器人协调路径规划【含Matlab源码 045期】
  17. mapinfo在线地图插件_利用开源软件下载地图和影像瓦片数据(修订版)
  18. Visio使用技巧之默认字体大小更改
  19. 沁恒CH32V307母板+OPA4377运放模块-开源
  20. 极域电子教室学生端全屏广播的破解及编程处理(附静态库)

热门文章

  1. 电脑误删数据怎么办?怎样做才能恢复?
  2. 借贷宝有多少人看得懂?借贷宝系统崩溃分析
  3. 今日头条如何定位自己的领域?!小白需要注意一下几点!
  4. 计算机声音音乐小星星,生活的声音,敲出一首小星星
  5. android studio2.0去除运行按钮旁边闪电标志的方法
  6. Adobe Flash player折腾好久,ubuntu chromium 浏览器终于可以看视频
  7. php3索尼,听索尼PHA-3半个月,唯一槽点在这里
  8. 教大家如何批量采集义乌购上的图片和保存方法
  9. 在线视频图片测试链接
  10. 蓝牙耳机什么牌子好?分享四款市面上音质好的蓝牙耳机