Java网络爬虫 您所在的位置:网站首页 网络限速设置为什么总是网络请求失败怎么回事 Java网络爬虫

Java网络爬虫

2023-03-09 19:39| 来源: 网络整理| 查看: 265

关于用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.httpclienthods.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代码 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);     //具体解析网页不做展示,之后更新     } }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有