c httpclient抓取网页(做一些必要的笔记,一来是对自己学习的巩固)

优采云 发布时间: 2021-12-29 00:15

  c httpclient抓取网页(做一些必要的笔记,一来是对自己学习的巩固)

  我最近研究了 Jsoup 并做了一些必要的笔记。一是巩固所学知识,二是给遇到同样问题的人参考

  文章目录

  Jsoup 简介

  jsoup 是一个 Java HTML 解析器,可以直接解析一个 URL 地址和 HTML 文本内容。它提供了一个非常省力的API,可以通过DOM、CSS和类似jQuery的操作方法来检索和操作数据。

  Jsoup 从 URL、文件或字符串解析 HTML 的两个主要功能;使用 DOM 或 CSS 选择器来查找和检索数据;操作 HTML 元素、属性和文本;

  注:jsoup基于MIT协议发布,可放心用于商业项目。

  三种常用的获取元素的方法

  Document doc = Jsoup.parse(content); // 解析网页 得到文档对象

doc.getElementsByTag("title"); // 获取tag是title的所有DOM元素

doc.getElementById("nav_top"); // 获取id=nav_top的DOM元素

doc.getElementsByClass("card"); // 根据样式名称来查询DOM元素

doc.getElementsByAttribute("width"); // 根据属性名来查询DOM元素

doc.getElementsByAttributeValue("target", "_blank"); // 根据属性名和属性值来查询DOM元素

doc.select(".columns .column h1 a"); // 通过选择器查找DOM元素

Element e = linkElements.first();

e.text(); // 获取DOM元素文本

e.attr("href"); //获取DOM元素属性值

  抓取网页内容的四个示例

  以抓取一个博客页面上的所有博客标题和对应的博客链接为例。

  网页内容

  

  需要的包

  

org.apache.httpcomponents

httpclient

4.5.2

org.jsoup

jsoup

1.10.2

  完整代码

  /**

* @author ys

* @version 2.0

* @date 2020/5/24 11:46

* @decs: 使用选择器语法查找DOM元素

*/

public class Demo4 {

public static void main(String[] args) throws Exception {

CloseableHttpClient httpClient = HttpClients.createDefault(); // 创建httpclient实例

HttpGet httpGet = new HttpGet("https://www.zhjynet.cn/"); // 创建httpGet实例

httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36");

CloseableHttpResponse response = httpClient.execute(httpGet); // 执行get请求

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

String content = EntityUtils.toString(entity, "utf-8"); // 获取网页内容

response.close();

Document doc = Jsoup.parse(content); // 解析网页 得到文档对象

Elements linkElements = doc.select(".columns .column .card .card-content h1 a"); // 通过选择器查找所有博客的标题

for (Element e : linkElements){

System.out.println("博客标题;"+e.text()); // 获取文本内容

System.out.println("博客链接:"+e.attr("href")); // 获取特定属性值

}

}

}

  抓取结果

  

  五点总结

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线