JAVA 爬虫 实现 httpclient请求 jsoup解析 实例代码 加依赖引入介绍

2 篇文章 0 订阅

爬虫 实现

1.获取网页

2.解析网页

java 实现获取网页

  • maven 引入依赖httpclient
<dependency>
	        <groupId>org.apache.httpcomponents</groupId>
	        <artifactId>httpclient</artifactId>
	        <version>4.5.3</version>
	    </dependency> 
  •  如果缺少lists 的依赖可以引入下边的jar
  • org.assertj.core.util.Lists;
<!-- https://mvnrepository.com/artifact/org.assertj/assertj-core -->
		<dependency>
			<groupId>org.assertj</groupId>
			<artifactId>assertj-core</artifactId>
			<version>3.2.1</version>
			<!-- <scope>test</scope> -->
		</dependency>

示例代码:

package com.supermap.httpclient;


import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHeaders;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.methods.RequestBuilder;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicHeader;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.assertj.core.util.Lists;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;

 

public class HttpClientTest {

  public static void main(String[] args) throws URISyntaxException, IOException {

    String url = "http://localhost:9999/getData";    //请求路径 

    //构造路径参数
    List<NameValuePair> nameValuePairList = Lists.newArrayList();
    nameValuePairList.add(new BasicNameValuePair("fileurl","E:/public_file/jar/application.json"));
    nameValuePairList.add(new BasicNameValuePair("table","TY_ksjbxx"));

    //构造请求路径,并添加参数
    URI uri = new URIBuilder(url).addParameters(nameValuePairList).build();

    //构造Headers
    List<Header> headerList = Lists.newArrayList();
    headerList.add(new BasicHeader(HttpHeaders.ACCEPT_ENCODING,"gzip, deflate"));
    headerList.add(new BasicHeader(HttpHeaders.CONNECTION, "keep-alive"));

    //构造HttpClient
    HttpClient httpClient = HttpClients.custom().setDefaultHeaders(headerList).build();

    //构造HttpGet请求
    HttpUriRequest httpUriRequest = RequestBuilder.get().setUri(uri).build();

    //获取结果
    HttpResponse httpResponse = httpClient.execute(httpUriRequest);

    //获取返回结果中的实体
    HttpEntity entity = httpResponse.getEntity();

    //查看页面内容结果
    String rawHTMLContent = EntityUtils.toString(entity);

    System.out.println(rawHTMLContent);

    //关闭HttpEntity流
    EntityUtils.consume(entity);

  }

}

请求的时候就可用 httpclient 来实现即可

添加添加各种参数啥的,有需要加东西

 

 

2.解析:

  • 引入依赖 jsoup
<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.10.3</version>
</dependency>

 

  • 代码:
package com.supermap.httpclient;

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;

public class DataLearnerCrawler3 {

	public static void main(String[] args) {

		String url = "https://blog.csdn.net/weixin_42749765";
		String rawHTML = null;
		try {
			rawHTML = getHTMLContent(url);
		} catch (IOException e) {
			e.printStackTrace();
		}

		// 将当前页面转换成Jsoup的Document对象
		Document doc = Jsoup.parse(rawHTML);

		// 获取所有的博客列表集合
		Elements blogList = doc.select("p[class=content]");

		// 针对每个博客内容进行解析,并输出
		for (Element element : blogList) {

			String title = element.select("a").text();

			System.out.println("文章名称:\t" + title);

		}

	}

	// 根据url地址获取对应页面的HTML内容,我们将上一节中的内容打包成了一个方法,方便调用
	private static String getHTMLContent(String url) throws IOException {

		// 建立一个新的请求客户端
		CloseableHttpClient httpClient = HttpClients.createDefault();

		// 使用HttpGet方式请求网址
		HttpGet httpGet = new HttpGet(url);
                httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0"); // 设置请求头消息User-Agent

		// 获取网址的返回结果
		CloseableHttpResponse response = httpClient.execute(httpGet);

		// 获取返回结果中的实体
		HttpEntity entity = response.getEntity();

		String content = EntityUtils.toString(entity);

		// 关闭HttpEntity流
		EntityUtils.consume(entity);

		return content;

	}

}

解析了一个博客主业分析出博客的名称

 

日志:


11:02:41.839 [main] DEBUG org.apache.http.impl.conn.PoolingHttpClientConnectionManager - Connection released: [id: 0][route: {s}->https://blog.csdn.net:443][total kept alive: 1; route allocated: 1 of 2; total allocated: 1 of 20]
文章名称:	各种AI、人工智能、大数据如秋日凉爽的风,杳然erzhi;区块链的风头得到短暂的下降。 此次山竹台风造成了多少伤亡和破坏?人民的生命和财产遭受重大损失
文章名称:	java 中级进阶高级 23种设计模式 详细介绍+代码详解 课程学院地址:https://edu.csdn.net/course/detail/23462 2019-04-06日最新更新 收藏 立即播放 蒋浩宇 开发组长/高级工程师/技术专家 主要讲解关于java、python、c+...
文章名称:	Maven 下 Spring Cloud 全环境—10645人已学习 课程介绍         本课程介绍Spring Cloud+maven+Eureka+zuul+微服务+客户端+feign+hystrix+ribbon+config 负载均衡,分布式集群,微服务,客户端,路由 全套环境》 课...
文章名称:	jquery/javascript 基础至入门到精通 项目实战—6390人已学习 课程介绍         本课程主要介绍 javascript/jQuery 框架的详细技术内容 课程收益     让没有基础的学员们 学到前端框架和前端js /jQuery 的技术 方便工作中使用 讲师介绍    ...
文章名称:	web全栈 HTML5/CSS基础至入门到精通 加项目实战—7536人已学习 课程介绍         web全栈 前端工程师 课程主要内容 html5 细节技术 和 css 细节技术介绍 还有项目实战 课程收益     没有基础的学员 可以学会前端开发技术,有开发经验的学员可以学习更加精通前端技...
文章名称:	HTML5/CSS+jquery +javascript 13天 从基础 入门到实战精通 项目实战—14780人已学习 课程介绍         1.前端技术总体介绍 html css jquery javascript 2.编辑第一个网页 看看网页网站到底是个什么东西 3.html/css专兰 ...
文章名称:	图片 实例代码 &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="UTF-8"...
文章名称:	图片 直接上代码fill 实现 &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="UTF-...
文章名称:	图片 重点: //变成圈图,中间加点东西 ctx.beginPath(); ctx.arc(100, 100, 30, 0,Math.PI * 2, false); ctx.closePath(); ctx.fillStyle = &q...
文章名称:	图片 重点 //一数据开始结束角度 ctx.arc(100, 100, 50, Math.PI * 1.5, Math.PI * 1.5 - Math.PI * 2 * 60 / 100, true); //2数据开始结束角度 ctx.arc(100, 100, 50, Math...
文章名称:	逆时针饼状图话扇子 60% 图片 code: var c = document.getElementById("canvasmain"); var ctx = c.getContext("2d"); ctx.beginPa...
文章名称:	图片: 话扇形: //画扇形百分比 逆时针 cts.beginPath(); cts.moveTo(x, y); cts.arc(x, y, radius, Math.PI * 1.5, Math.PI * 1.5 - Math.PI * 2 * process /...
文章名称:	介绍 什么是Apache NiFi? 简单地说,NiFi是为了自动化系统之间的数据流而构建的。虽然术语“数据流”在各种环境中使用,但我们在此处使用它来表示系统之间自动化和管理的信息流。这个问题空间一直存在,因为企业有多个系统,其中一些系统创建数据,一些系统消耗数据。已经讨论并广泛阐述了出现的问...
文章名称:	目录 1.下载 2.solr单机启动 3.solr云启动 索引Techproducts数据 基本搜索 1.下载 地址:https://lucene.apache.org/solr/ 下载最新版就好 2.solr单机启动 下载下来的zip或tar解压 在解压目录下bin下执行 s...
文章名称:	策略: 1.绘制一张图 2.在途中添加圆球 3.让圆球移动 4.左右移动,小于最左往右移动,大于最右网左移动 5.上下移动,小于top,向下,大于bottom 向上 写这个完全是锻炼游戏思想 &lt;!DOCTYPE html&gt; &lt;h...
文章名称:	贪吃蛇实现策略 1.绘制初始地图界面 2.绘制实物,通过绝对定位方式绘制(top,left,width,height 3.绘制小蛇,通过绝对定位方式绘制, 1.通过二维素组和在第一维是蛇的长度,二维是蛇的样式(0x轴,1y轴,2样式,3,待定) 2.通过遍历获取到展现出一条小蛇 3.设置 ...
文章名称:	策略: 1.绘制一个界面 2.将最新绘制出来的黑块向下移动 3.每点击黑框加分,点击还快附件失败 4.点击完黑框后消除掉黑块 5.没点击一次黑框加速下移和加速出现 6.下移用的是定时器,没过2000秒出现一个,使用没10毫秒下移2px,并且不断增加 7.为了样式更好点可以设计设计,一...
文章名称:	五子棋游戏开发开发侧率 第一页面样式 通过表格或放一堆div实现,看怎么方便怎么写 第二执行下子 当点击那个div改变那个div样式或表格中的样式, 第三计算是否已经达到五个字 通过正立左斜右斜计算得出值 从新开始 清空或还原状态 全套代码解析版代注释版源码 https://downl...
文章名称:	1.下载 jmeter官网:http://jmeter.apache.org/download_jmeter.cgi 2.下载后解压到本地某目录下 3. 将“解压文件\bin”目录放到PATH中,也可以创建一个JMETER_HOME放到PATH中 4.在windows中运行 win+R 输...
文章名称:	1.将model maven 考到其他电脑上 2.导入项目 3.配置maven 厂库 设置文件.xml 4.配置jdk 5.在jdk后加这么一行 -Dmaven.multiModuleProjectDirectory=$M2_HOME 6.将jar包的版本从父工程考过来...
文章名称:	目录 java code: 启动类: 初始化类: 通道类: html code 前段代码 页面图片: 日志: 总结介绍: pom.xmo include jar &lt;dependency&gt; &lt;groupId&gt;io....

 

 

ok 

 

 

 

持续更新

 

 

 

 

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Java编写基于HttpClientJsoup爬虫,需要进行以下步骤: 1. 首先,导入HttpClientJsoup依赖包。可以使用maven或gradle进行依赖管理。 2. 创建一个HttpClient实例,用于发送HTTP请求和接收响应。可以使用HttpClients.createDefault()方法创建一个默认配置的实例。 3. 创建一个HttpGet实例,设置请求URL和请求头信息。可以使用new HttpGet(url)方法创建一个HttpGet实例,然后使用setHeader()方法设置请求头信息。 4. 发送HTTP请求,并获取响应结果。可以使用HttpClient.execute()方法发送请求,并使用HttpResponse.getEntity()方法获取响应实体。 5. 解析HTML内容。可以使用Jsoup.parse()方法解析HTML内容,然后使用Jsoup提供的API进行内容提取和处理。 以下是一个使用HttpClientJsoup进行网页爬取的示例代码: ```java import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import java.io.IOException; public class WebCrawler { public static void main(String[] args) throws IOException { // 创建一个HttpClient实例 HttpClient httpClient = HttpClients.createDefault(); // 创建一个HttpGet实例,设置请求URL和请求头信息 HttpGet httpGet = new HttpGet("https://www.example.com"); httpGet.setHeader("User-Agent", "Mozilla/5.0"); // 发送HTTP请求,并获取响应结果 HttpResponse httpResponse = httpClient.execute(httpGet); String html = EntityUtils.toString(httpResponse.getEntity(), "UTF-8"); // 解析HTML内容 Document document = Jsoup.parse(html); String title = document.title(); System.out.println("Title: " + title); } } ``` 在这个示例中,我们使用HttpClient发送了一个GET请求到https://www.example.com,并获取了响应结果。然后使用Jsoup解析HTML内容,并获取了网页的标题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值