java - 无法使用 HTMLParser 获取网页的所有内容

标签 java android html parsing jsoup

我正在使用 Jsoup 来解析这个网页 https://daisy.dsv.su.se/servlet/schema.MomentInfoRuta?id=261020&kind=100&nochange=true&allPrio=true&multiple=true&allEx=true

在该网页中,我可以在浏览器中看到一些内容,但是当我尝试使用 Jsoup 解析它时

Document doc = Jsoup.parse("https://daisy.dsv.su.se/servlet/schema.MomentInfoRuta?id=261020&kind=100&nochange=true&allPrio=true&multiple=true&allEx=true");
System.out.println(doc);

它会回来

<html>
<head></head>
<body>
https://daisy.dsv.su.se/servlet/schema.MomentInfoRuta?id=261020&amp;kind=100&amp;nochange=true&amp;allPrio=trueμltiple=true&amp;allEx=true
</body>
</html>

这并不全是 HTML。

有什么建议我可以解决这个问题或者为什么会发生这种情况吗?

最佳答案

看起来他们正在检测爬虫程序(通常是通过您的用户代理)并发送不同的内容。试试setting your user agent string到标准浏览器的字符串,看看是否可以解决您遇到的问题。

另一个潜在的问题是通过 AJAX 加载的数据不会被 JSoup 下载,尽管我不认为这是这里的问题。它解析提供的 HTML,但不执行 JavaScript,因此它无法获取稍后出现的任何额外内容。您也许可以使用类似 PhantomJS 来解决该问题。它可以处理和渲染 HTML、CSS 和 JavaScript,并且(理论上)会为您提供最终在浏览器中看到的实际 HTML。

关于java - 无法使用 HTMLParser 获取网页的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12223840/

相关文章:

java - ResultSet 的 getString() 方法是否可以用于从 MySQL 表中获取 TEXT 类型列的值?

java - 如何比较从 2 个不同类加载器加载的 2 个类

android - 如何让我的 Android 应用程序始终在 Chrome 或其他支持 TWA 的浏览器中打开?

Android Button drawableEnd Style Item

android - 以编程方式更改 R.string 的值?

html - 为什么当我尝试在 html 表格的 tbody 上设置高度和垂直滚动时出现此问题?

java - Hazelcast L2 缓存慢

java - 对于两个整数用户输入,如何检测第一个输入是否传递了字符串?

javascript - 与 Angular-Formly 等效的 Div 类

PHP 从 HTML 表单中回显日期并将其从 Y-m-d 格式化为 d-m-Y 错误 31-12-1969