有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java HTML解析具有无限滚动的页面

如果页面有无限滚动条,我如何用java获取页面的HTML?我目前正以这种方式抓取一个页面:

URL url = new URL(stringUrl);
URLConnection con = url.openConnection();
InputStream in = con.getInputStream();
String encoding = con.getContentEncoding();
encoding = encoding == null ? "UTF-8" : encoding;
String html = IOUtils.toString(in, encoding);
Document document = Jsoup.parse(html);

但它不会返回任何与页面无限滚动部分相关的内容。如何在HTML页面上触发此滚动,使我的Jsoup文档包含此部分


共 (2) 个答案

  1. # 1 楼答案

    @dsh是对的,内容很可能是通过AJAX动态加载的。作为使用真实浏览器(即selenium webdriver)的替代方法,您可以查看网络流量并识别页面触发的API调用。您可以直接使用Jsoup调用该Api。但是,内容通常不是HTML,而是JSON、XML或其他格式。这样做可能仍然很有价值,因为使用webdriver通常非常缓慢,而且资源非常繁重

  2. # 2 楼答案

    无限滚动描述了一种页面不包含内容的技术。一些JavaScript代码在浏览器中运行,向服务器发送请求以获取附加内容,并将其添加到页面中。当您滚动到可用内容的末尾时,JavaScript代码重复这个过程:它发送另一个请求并添加额外的内容

    因此,您需要一个带有JavaScript引擎的web浏览器,该引擎可以运行JavaScript代码并生成导致代码加载内容的事件