【问题标题】:parse html elements using Jsoup使用 Jsoup 解析 html 元素
【发布时间】:2016-04-18 07:07:51
【问题描述】:

我想从下面的 html 中检索“data-default-src”的值。似乎正文在影子根节点中或隐藏在源代码中。这只能通过 chrome 的检查元素功能看到,而不是在完成 ctrl+u 时看到。

<body onload="handleOnLoad();" style="margin:0;padding:0;width:100%;height:100%;
position:relative;overflow:hidden" id="myPlayer" 
data-default-src="https://cdn.video.playwire.com/12272/videos/4483914/video-sd.mp4?hosting_id=12272">

这是我迄今为止尝试过的:

Elements media = doc.select("body");

            for (Element links: media) 
            {
            System.out.println((links.attr("abs:data-default-src")));
            }

还有这个:

Element body = doc.body();
System.out.println(body.attr("data-default-src"));

【问题讨论】:

  • "这只能通过 chrome 的检查元素功能看到,而不是在完成 ctrl+u 时看到。"这意味着该属性是在浏览器中动态生成的,很可能是使用 JavaScript。 JSoup 是一个 HTML 库,而不是一个完整的浏览器模拟器。您将需要找出另一种获取价值的方法。
  • @still_learning 谢谢。您知道的任何其他提取 API 可以帮助解决吗?
  • 这取决于您的要求以及属性的生成方式。看看this page。前段时间我尝试过,HTMLUnit 似乎是一个可靠的选择。
  • 是的,我将通过 API。谢谢大家。

标签: java html jsoup google-chrome-devtools


【解决方案1】:

您可以尝试HTMLUnit,这是一个提供无头浏览器的库。有了这个,你可以加载页面,就好像你真的在访问它,导致所有的 javascript 被评估,任何动态内容都被插入到 DOM 中。在那里您可以选择使用 HTMLUnit 的 DOM API 或将其放入 JSoup。

【讨论】:

  • 谢谢。我会试试看。
猜你喜欢
  • 2015-01-03
  • 2016-08-13
  • 1970-01-01
  • 2012-04-18
  • 1970-01-01
  • 2020-06-01
  • 2012-06-19
  • 1970-01-01
  • 2016-10-02
相关资源
最近更新 更多