gpt4 book ai didi

java - 使用 htmlunit -Java 访问由 Javascript 生成的 html

转载 作者:搜寻专家 更新时间:2023-10-30 21:29:37 53 4
gpt4 key购买 nike

我正在尝试能够测试一个使用 javascript 呈现大部分 HTML 的网站。使用 HTMLUNIT 浏览器,您将如何访问由 javascript 生成的 html?我正在查看他们的文档,但不确定最好的方法是什么。

WebClient webClient = new WebClient();
HtmlPage currentPage = webClient.getPage("some url");
String Source = currentPage.asXml();
System.out.println(Source);

这是获取页面 html 的简单方法,但是您会使用 domNode 还是其他方法来访问 javascript 生成的 html?

最佳答案

你必须给 JavaScript 一些时间来执行。

检查下面的示例工作代码。 bucket div 不在原始来源中。

import java.io.IOException;
import java.net.MalformedURLException;
import java.util.List;
import com.gargoylesoftware.htmlunit.*;
import com.gargoylesoftware.htmlunit.html.HtmlPage;

public class GetPageSourceAfterJS {
public static void main(String[] args) throws FailingHttpStatusCodeException, MalformedURLException, IOException {
java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(java.util.logging.Level.OFF); /* comment out to turn off annoying htmlunit warnings */
WebClient webClient = new WebClient();
String url = "http://www.futurebazaar.com/categories/Home--Living-Luggage--Travel-Airbags--Duffel-bags/cid-CU00089575.aspx";
System.out.println("Loading page now: "+url);
HtmlPage page = webClient.getPage(url);
webClient.waitForBackgroundJavaScript(30 * 1000); /* will wait JavaScript to execute up to 30s */

String pageAsXml = page.asXml();
System.out.println("Contains bucket? --> "+pageAsXml.contains("bucket"));

//get divs which have a 'class' attribute of 'bucket'
List<?> buckets = page.getByXPath("//div[@class='bucket']");
System.out.println("Found "+buckets.size()+" 'bucket' divs.");

//System.out.println("#FULL source after JavaScript execution:\n "+pageAsXml);
}
}

输出:

Loading page now: http://www.futurebazaar.com/categories/Mobiles-Mobile-Phones/cid-CU00089697.asp‌​x?Rfs=brandZZFly001PYXQcurtrayZZBrand
Contains bucket? --> true
Found 3 'bucket' divs.

使用的 HtmlUnit 版本:

<dependency>
<groupId>net.sourceforge.htmlunit</groupId>
<artifactId>htmlunit</artifactId>
<version>2.12</version>
</dependency>

关于java - 使用 htmlunit -Java 访问由 Javascript 生成的 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2961965/

53 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com