返回顶部
首页 > 资讯 > 后端开发 > Python >关于Jsoup将相对路径转为绝对路径的方法
  • 266
分享到

关于Jsoup将相对路径转为绝对路径的方法

Jsoup相对路径Jsoup绝对路径 2023-05-17 17:05:56 266人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录通过jsoup将相对路径转为绝对路径的方法示例自从使用 HttpClient 和 Jsoup 配合编写了几个简单的入门爬虫之后,发现对于绝对路径的需求是很频繁的,因为大部分的网页

自从使用 HttpClient 和 Jsoup 配合编写了几个简单的入门爬虫之后,发现对于绝对路径的需求是很频繁的,因为大部分的网页都写相对路径,这样是有好处的,但是爬虫还是需要获取绝对的路径的。 通常我的处理方式是在获取的相对路径路径前面,拼接一个根路径。当是,这种方法只能适用于,相对路径是相对于当前路径的,如果相对路径是相对于当前路径的上一级或更上一级,那就不好处理了。

正好我昨天我碰到了这种相对路径。我无意间发现原来 Jsoup 本身就提供了这个功能,但是我发现很多其他人的博客,虽然介绍了 Jsoup 通过相对路径获取绝对路径的方法,但是都没有介绍完全,为此我也是走了几个坑,特意在此说明一下。

通过Jsoup将相对路径转为绝对路径的方法

如果想要通过 attr 方法获取到绝对路径,必须同时使用这两个方法。

Document org.jsoup.Jsoup.parse(String html, String baseUri);
String org.jsoup.nodes.Node.attr(String attributeKey);

必须使用Jsoup 带有 baseUri 参数的重载方法,如果只是用具有第一个参数的 方法,那么通过attr取绝对路径时,获取的内容为空!这是一个坑,但是其它人的博客都没有介绍这一点。

Parameters:
html HTML to parse
baseUri The URL where the HTML was
retrieved from. Used to resolve relative URLs to absolute URLs, that
occurbefore the HTML declares a <base href> tag.

这里列出参数的注释,第一个参数是需要解析的html文档,第二个参数是这个html的url。用于将相对url解析为绝对url,即在HTML声明标记之前发生。

注意: 这里的 baseUri 并不是网站的根路径,它是指当前的html路径。即当前相对路径所在的html文档的路径,是相对路径相对的那个路径。 所以,如果填写的是当前根路径,那么最后获取的绝对路径也是有问题的。(也许是可以使用的,但是格式可能有问题。) 下面第二点,依赖于当前这个给定的 baseUri 参数。

attr 方法里面的一句话:

To get an absolute URL from an attribute that may be a relative URL, prefix the key with abs,which is a shortcut to the absUrl method.
E.g.: String url = a.attr(“abs:href”);
这句话的意思是从一个相对路径种获取一个绝对路径,使用 abs 前缀,这是absUrl方法的快捷方式。
并且给了一个示例:

String url = a.attr("abs:href");

所以,如果想要获取到绝对路径的话,需要在参数前面加上 abs: 。 这里 abs 就是 absolute 的缩写,它的意思就是绝对的。

但是,如果不去使用带有上面第一点提到的那个重载的 parse 方法的话,这种方法是取不到绝对路径的,甚至是取不到路径。我在这里踩了一个坑。

示例

这里以一个简单的例子说明: 代码:

package ahnu.news;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class JsoupPathTest {
	public static void main(String[] args) {
		String html = "<html>"
				+ "<head></head>"
				+ "<body>"
				+ "<a href=\"../draGon/love/you\"></a>"
				+ "</body>"
				+ "</html>";
		
		System.out.println("正确的用法");
		Document doc = Jsoup.parse(html, "http://example/index/loveyou/");
		Element aTag = doc.getElementsByTag("a").first();   //获取 a 标签,只有一个,取第一个即可。
		System.out.println(aTag);
		String relativePath = aTag.attr("href");      //获取相对路径
		String absolutePath = aTag.attr("abs:href");  //获取绝对路径
		System.out.println("相对路径:" + relativePath);
		System.out.println("绝对路径:" + absolutePath);
		
		System.out.println("---------------------分割线---------------------");
		
		System.out.println("错误的用法");
		doc = Jsoup.parse(html);
		aTag = doc.getElementsByTag("a").first();   //获取 a 标签,只有一个,取第一个即可。
		System.out.println(aTag);
		relativePath = aTag.attr("href");      //获取相对路径
		absolutePath = aTag.attr("abs:href");  //获取绝对路径
		System.out.println("相对路径:" + relativePath);
		System.out.println("绝对路径:" + absolutePath);
	}
}

运行结果:

在这里插入图片描述

注意: 1.在解析html的时候,必须添加 baseUri 参数,否则获取绝对路径时,反而什么都得不到,这是一个坑,注意防范。 2.希望其他人贴方法的时候,可以附带代码的执行结果,或者如果是转载的别人的博客,也可以运行一下代码,不然如果他错了,你也转载,那就是在传播错误了。 3.英语还是很重要的,关键时候可以帮助自己理解api的正确用法。

到此这篇关于关于Jsoup将相对路径转为绝对路径的方法的文章就介绍到这了,更多相关Jsoup获取绝对路径内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 关于Jsoup将相对路径转为绝对路径的方法

本文链接: https://lsjlt.com/news/211403.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 关于Jsoup将相对路径转为绝对路径的方法
    目录通过Jsoup将相对路径转为绝对路径的方法示例自从使用 HttpClient 和 Jsoup 配合编写了几个简单的入门爬虫之后,发现对于绝对路径的需求是很频繁的,因为大部分的网页...
    99+
    2023-05-17
    Jsoup 相对路径 Jsoup 绝对路径
  • php怎么将相对路径转换为绝对路径
    本文操作环境:Windows10系统、PHP7.1版、Dell G3电脑php怎么将相对路径转换为绝对路径realpath() 函数返回绝对路径。该函数删除所有符号连接(比如 '/./', '/../' 以及...
    99+
    2017-10-08
    php
  • php如何将相对路径转换为绝对路径
    这篇文章主要讲解了“php如何将相对路径转换为绝对路径”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php如何将相对路径转换为绝对路径”吧!在PHP中,可以利用realpath()函数将相对...
    99+
    2023-06-30
  • 怎么在python将相对路径转换为绝对路径
    今天就跟大家聊聊有关怎么在python将相对路径转换为绝对路径,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,P...
    99+
    2023-06-14
  • python3绝对路径,相对路径
    from __future__ import absolute_import的作用:  直观地看就是说”加入绝对引入这个新特性”。说到绝对引入,当然就会想到相对引入。那么什么是相对引入呢比如说,你的包结构是这样的: pkg/ pkg/in...
    99+
    2023-01-30
    路径 绝对路径
  • python读取相对路径和绝对路径的方法
    目录一、简介二、绝对路径 三、相对路径一、简介 下面的路径介绍针对windows,在编写的py文件中打开文件的时候经常见到下面其中路径的表达方式。 我们常用’/...
    99+
    2023-02-10
    python读取相对路径和绝对路径 python读取相对路径 python读取绝对路径
  • Linux 相对路径和绝对路径的使用
    01. 概述 绝对路径和相对路径在shell环境中经常遇到,各有用处。有时候相对路径比较方便,有时候绝对路径比较方便。 02. 绝对路径(Absolute Pathname) 绝对路径必定由****开头 相对路径是相...
    99+
    2022-06-04
    Linux 相对路径 绝对路径 Linux 相对路径 Linux 绝对路径
  • html怎么把图片绝对路径改为相对路径
    本篇内容介绍了“html怎么把图片绝对路径改为相对路径”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!好程序...
    99+
    2024-04-02
  • Java getAbsolutePath()获取绝对路径和相对路径
    Java中的File类的getAbsolutePath()方法用于获取文件的绝对路径。该方法返回一个字符串,表示文件的绝对路径。绝对...
    99+
    2023-09-23
    java
  • windows绝对路径和相对路径如何写
    今天小编给大家分享一下windows绝对路径和相对路径如何写的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。绝对路径和相对路径...
    99+
    2023-07-02
  • Python相对路径和绝对路径及写法演示
    目录Python 相对路径和绝对路径1. 查看自己的当前所处文件夹的绝对路径:2.设置当前工作目录:3. 获取当前工作目录:补充:Python 相对路径、绝对路径的写法实例演示绝对路...
    99+
    2023-02-10
    Python 相对路径绝对路径 Python 绝对路径 Python 绝对路径写法 Python 相对路径写法
  • Java中怎么获取路径的绝对路径和相对路径
    今天小编给大家分享一下Java中怎么获取路径的绝对路径和相对路径的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前言:在纯 J...
    99+
    2023-06-29
  • HTML 绝对路径与相对路径概念详细
    路径指文件存放的位置,在网页中利用路径可以引用文件,插入图像、视频等。表示路径的方法有两种:相对路径,绝对路径。以下讨论均是在HTML环境下进行。 相对路径 相对路径是指目标相对于当...
    99+
    2024-04-02
  • 怎么引用html绝对路径与相对路径
    本篇内容介绍了“怎么引用html绝对路径与相对路径”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、..\...
    99+
    2024-04-02
  • 在 PHP 中包含绝对路径和相对路径
    无论是在服务器上还是在本地 PC 上,执行 PHP 程序的路径都会有所不同并且很重要。如果你在错误的目录中运行,那么了解如何使用这两种类型的路径(相对路径和绝对路径)非常重要。尽管两者都很重要,但我们可能经...
    99+
    2024-02-27
  • Python中怎么获取相对路径和绝对路径
    Python中怎么获取相对路径和绝对路径,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python是一门跨平台的语言,但并不是说你用Python随便写的一个程序就能在不同的...
    99+
    2023-06-17
  • linux绝对路径和相对路径有什么区别
    Linux的路径分为绝对路径和相对路径。绝对路径是从根目录(/)开始的完整路径,它指定了一个文件或目录在文件系统中的确切位置。例如,...
    99+
    2023-10-11
    linux
  • C#相对路径绝对路径的问题怎么解决
    这篇文章主要介绍“C#相对路径绝对路径的问题怎么解决”,在日常操作中,相信很多人在C#相对路径绝对路径的问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#相对路径绝对路径的问题怎么解决”的疑惑有所...
    99+
    2023-06-18
  • linux绝对路径和相对路径的区别有哪些
    小编给大家分享一下linux绝对路径和相对路径的区别有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在linux中绝对路径与相对路径的区别是:绝对路径是从li...
    99+
    2023-06-29
  • Linux绝对路径与相对路径的概念是什么
    本篇内容介绍了“Linux绝对路径与相对路径的概念是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2023-02-01
    linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作