为什么Elements links = doc.select("a[href]");中我获得的链接是#
时间: 2024-02-09 20:12:09 浏览: 23
在使用 Jsoup 解析 HTML 文档时,使用 `doc.select("a[href]")` 可以选取所有带有 href 属性的 `<a>` 标签,但是这些标签中可能包含了一些不合法的链接,例如 "#",这些链接不是一个完整的 URL,只是一个相对路径,用于在同一页面内进行跳转。
如果你只需要获取有效的链接,可以通过过滤 href 属性来实现。例如,过滤掉以 "#" 开头的链接:
```
Elements links = doc.select("a[href^=http], a[href^=https]");
```
这样就可以只选取以 "http://" 或 "https://" 开头的链接,忽略掉相对路径的链接。当然,如果你需要获取相对路径的链接,可以根据实际情况进行调整。
相关问题
Elements links = doc.select("a[href]");
这是 Jsoup 库中的一行代码,用于从 HTML 文档中提取所有带有 href 属性的链接元素。
具体来说,它使用 doc.select() 方法选择文档中的所有元素,选择器表达式 "a[href]" 表示选择带有 href 属性的所有 <a> 元素,返回的结果是一个 Elements 对象,其中包含所有符合条件的元素。
你可以通过遍历 Elements 对象,获取每个链接元素的 href 属性值,进一步对链接进行处理。例如:
```java
Elements links = doc.select("a[href]");
for (Element link : links) {
String href = link.attr("href");
// 处理链接
}
```
如何在java中获取html中class="text"的链接地址
你可以使用 Jsoup 库来解析 HTML 文档并获取链接地址。假设 HTML 文档如下所示:
```html
<html>
<body>
<div class="post">
<h2><a href="https://www.example.com/blog/post-1">Post 1</a></h2>
<p class="text">This is the first post.</p>
</div>
<div class="post">
<h2><a href="https://www.example.com/blog/post-2">Post 2</a></h2>
<p class="text">This is the second post.</p>
</div>
</body>
</html>
```
你可以使用以下代码来获取所有 class 属性为 "text" 的链接地址:
```java
String html = "your html string";
Document doc = Jsoup.parse(html);
Elements links = doc.select("p.text a[href]");
for (Element link : links) {
String url = link.attr("href");
System.out.println(url);
}
```
这段代码首先使用 Jsoup.parse() 方法将 HTML 字符串解析为 Document 对象,然后使用 doc.select() 方法选择所有 class 属性为 "text" 的 <p> 元素中的链接元素 <a>,并通过遍历获取每个链接元素的 href 属性值。最后,将链接地址打印出来。