java爬虫抓取网页数据(Java的Http协议客户端HttpClient来实现抓取网页数据(组图))

优采云 发布时间: 2021-10-14 15:03

  java爬虫抓取网页数据(Java的Http协议客户端HttpClient来实现抓取网页数据(组图))

  爬虫抓取网页上的数据,我们同样点击链接访问网页数据。就是使用Http协议访问网页。这里我们使用Java Http协议客户端HttpClient来实现网页数据的爬取。

  你好,世界

  

  获取带参数的请求

  

  

  使用参数发布请求

  帖子也很简单,和上面的差不多,只是改变了发起请求的方式,如下:

  当然,如果没有参数,则不需要创建表单对象,只需一个 HttpPost 对象即可。

  

  代码中对象的说明:

  代码优化:连接池

  在我们爬取数据的过程中,HttpClient连接对象的创建和销毁是非常频繁的,这里我们使用连接池进行优化

  public class poolTest {

public static void main(String[] args) {

//创建连接池管理器

PoolingHttpClientConnectionManager pcm = new PoolingHttpClientConnectionManager();

pcm.setMaxTotal(100); //设置池内最大连接数

pcm.setDefaultMaxPerRoute(10); //设置每个坠机的最大连接数

//从连接池中获取连接对象,而不是单独创建连接对象

CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(pcm).build();

HttpGet httpGet = new HttpGet("https://www.cnblogs.com/msi-chen");

System.out.println(httpGet);

//使用httpClient发起请求,获得响应

CloseableHttpResponse response = null;

try {

response = httpClient.execute(httpGet);

//解析响应,获取到数据

if (response.getStatusLine().getStatusCode() == 200){

HttpEntity entity = response.getEntity();

String content = EntityUtils.toString(entity,"utf8");

System.out.println(content.length());

}

} catch (IOException e) {

e.printStackTrace();

}finally {

if (response != null){

try {

response.close();

} catch (IOException e) {

e.printStackTrace();

}

//因为我们是连接池中获取到的连接,所以这里不能再给他关闭了

//httpClient.close();

}

}

}

}

  获取资源的相关时间配置

  

  Jsoup 不是 Jsonp

  经过我们上面的学习,我们已经可以通过HttpClient抓取页面了。抓取页面后,我们可以解析它。您可以使用字符串解析工具来解析页面,也可以使用正则表达式。对于解析,但是这两种方案的开发成本都很高,不推荐使用,这里我们学习了一个专门解析html页面的技术,Jsonp

  汤品介绍

  jsonp 是一个 Java Html 解析器,可以自行解析 URL 地址和 html 文本内容。它有一组现成的 API 来删除和操作数据。

  jsonp的作用:

  Jsoup 解析 URL

  添加 Jsoup 依赖以使用 Jsoup

  

  

  注意:Jsoup 只限于使用 Html 解析工具,而不是替代 HttpClient 来发起请求,因为 HttpClient 支持多线程、连接池、代理等技术,而 Jsoup 对此的支持并不理想。专业的事情交给专业的人,HttpClient发送请求抓取数据,Jsoup做解析

  Jsoup 解析字符串

  

  

  Jsoup解析文件

  这是上面的静态页面。除了转换成String再解析,我们也可以直接解析文件

  

  使用 Dom 遍历文档

  记得还有一个sax解析,比较麻烦,现在差点忘了;

  Dom解析,不知道大家有没有听过或者用过。反正我之前用过,但是解析的确实是XML。先简单介绍一个Dmo方法。

  Dmo 解析会将目标文档视为一个对象。首先将整个文档加载到内存中。如果文档太大,内存可能会溢出(一般不会)。加载到内存后,会构建一个Dom树,然后Just开始提供访问和修改操作

  如果你之前没有学习过,我们通过一个小Demo来学习。如果您使用过它,我们有权对其进行审核:

  

  Java代码如下: 我演示了几个常用的获取页面数据的API

  

  从元素中获取属性

  

  选择器

  下面是上述always选择器的使用演示

  

  

  选择器选择器组合使用

  

  

  

  

  Hello World 类爬虫案例列表

  在上面的学习中,我们已经知道HttpClient是用来爬取数据的,Jsoup是用来分析HttpClient爬取到的数据的。下面我们来练习一下这两个工具的使用。

  搁浅了一会儿,暂时……以后更新

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线