JSoup - abs:href 获取的绝对地址为空问题

Summary

  • 在获取 a 标签中的 href 值得时候,发现可以获取到相对地址,但是使用 abs:href 的是返回结果是空的。
  • 查看文档发现,Jsoup.parse 的第二个参数可以传入 baseURL,我们在这里获取即可。

Demo

  • Scala 代码
val urlList = Jsoup.parse(html,"https://www.jianshu.com/").getElementsByAttributeValue("target","_blank").select(".title")
println(urlList)
println(htmlPage.getBaseURL)
urlList.forEach(
// Element:
x => {
println(x.absUrl("href"))
println(x.absUrl("abs:href"))
}
)
  • Scala 代码
def getContentUrls: List[URL] = {
val listBuffer = new ListBuffer[URL]
val urlList = Jsoup.parse(html).select("""a[href~=.*?.html]""")
urlList.foreach(x => {
val url = new URL (x.attr("abs:href")) // 获取元素A Element 的绝对路径信息
logger.info("获取URL的绝对路径信息: " + url)
listBuffer += url
})
listBuffer.toList
}
posted @   duchaoqun  阅读(1276)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示