爬虫 实现
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专兰 ...
文章名称: 图片 实例代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"...
文章名称: 图片 直接上代码fill 实现 <!DOCTYPE html> <html lang="en"> <head> <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 向上 写这个完全是锻炼游戏思想 <!DOCTYPE html> <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 <dependency> <groupId>io....
ok
持续更新