java爬虫抓取网页数据(关于HTML解析器的一些重要方法和重要类1-2 )

优采云 发布时间: 2021-11-07 01:06

  java爬虫抓取网页数据(关于HTML解析器的一些重要方法和重要类1-2

)

  Jsoup 简介

  jsoup 是一个 Java HTML 解析器,主要用于解析 HTML。

  中文文档:

  Jsoup 可以实现什么?

  从 URL、文件或字符串中抓取和解析 HTML 以查找和提取数据,使用 DOM 遍历或 CSS 选择器来操作 HTML 元素、属性和文本以根据安全白名单清理用户提交的内容以防止 XSS 攻击输出整洁的 HTML

  在爬取的时候,当我们使用HttpClient这样的框架来获取网页的源码时,需要从网页的源码中提取出我们想要的内容,然后我们可以使用HTML解析器这样的作为 jsoup。它可以很容易地实现。

  虽然jsoup也支持直接从某个地址爬取网页源码,但是只支持HTTP和HTTPS协议,支持还不够丰富。因此,主要用于解析HTML。

  依赖:

  

org.jsoup

jsoup

1.11.3

  Jsoup 重要类 1、org.jsoup.Jsoup 类

  Jsoup 类是任何 Jsoup 程序的入口点,将提供从各种来源加载和解析 HTML 文档的方法。

  方法说明

  静态连接connect(String url)

  创建并返回到 URL 的连接。

  静态文档解析(文件输入,字符串字符集名称)

  将指定的字符集文件解析为文档。

  静态文档解析(String html)

  将给定的 html 代码解析为文档。

  tatic String clean(String bodyHtml, Whitelist whitelist)

  通过解析输入从输入 HTML 返回安全的 HTML

  HTML 并按允许的标签和属性的白名单过滤。

  2、org.jsoup.nodes.Document 类 3、org.jsoup.nodes.Element 类

  重要方法:

  方法说明

  child(int index)

  通过索引定位子元素。

  儿童()

  获取该元素的所有子元素

  类名()

  获取该元素的类属性名称

  classNames()

  获取所有元素的类名返回值:Set

  classNames(Set classNames)

  通过提供的类名设置元素的类属性

  数据()

  获取该元素的组合数据

  空()

  删除此元素的所有子数据节点。

  firstElementSibling()

  获取当前元素的第一个同级同级元素。

  getAllElements()

  获取当前元素下的所有元素(包括自己、孩子、孩子的孩子)

  getElementsByAttribute(String key)

  通过属性名查找当前html下的所有元素

  getElementsByClass(String className)

  当前元素是否有这个类或者这个元素下是否有这个类

  html()

  在文件中检索Html

  id()

  返回当前元素的id值

  isBlock()

  测试该元素是否为层次元素

  lastElementSibling()

  获取与该元素同级的最后一个元素

  父()

  获取该节点的父节点

  父母()

  获取父节点,一直到节点的根节点

  选择()

  选择器方法,通用

  兄弟元素()

  获取所有兄弟元素(不包括你自己)

  标签()

  获取这个标签对象

  标签名()

  获取此标签的名称

  文本()

  获取该元素和所有子元素的文本内容

  textNodes()

  获取该元素的子文本标签集合

  包裹()

  包装这个元素的html

  以下是一些示例:从 URL 加载文档,使用 Jsoup.connect() 方法从 URL 加载 HTML。

   Document document = Jsoup.connect("https://blog.csdn.net/s2152637/article/details/98983370").get();

System.out.println(document.title());

  获取网页中的所有链接

   Document document = Jsoup.connect("https://blog.csdn.net/s2152637/article/details/98983370");

Elements links = document.select("a[href]");

for (Element link : links) {

System.out.println("link : " + link.attr("href"));

System.out.println("text : " + link.text());

}

  获取网页中显示的所有图片

   Document document = Jsoup.connect("https://blog.csdn.net/s2152637/article/details/98983370");

Elements images = document.select("img[src~=(?i)\\.(png|jpe?g|gif)]");

for (Element image : images) {

System.out.println("src : " + image.attr("src"));

System.out.println("height : " + image.attr("height"));

System.out.println("width : " + image.attr("width"));

System.out.println("alt : " + image.attr("alt"));

}

  获取URL的元信息。元信息包括用于确定网络内容索引的搜索引擎,例如 Google。它们以一些标签的形式存在于 HTML 页面的 HEAD 部分。

  Document document = Jsoup.connect("https://blog.csdn.net/s2152637/article/details/98983370");

String description = document.select("meta[name=description]").get(0).attr("content");

System.out.println("Meta description : " + description);

String keywords = document.select("meta[name=keywords]").first().attr("content");

System.out.println("Meta keyword : " + keywords);

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线