gpt4 book ai didi

java - 使用 HtmlUnit 访问动态网站

转载 作者:行者123 更新时间:2023-11-30 03:41:01 25 4
gpt4 key购买 nike

我想在不使用 API 的情况下访问 Instagram 页面。我需要找到关注者的数量,因此它不仅仅是源下载,因为页面是动态构建的。

我找到了 HtmlUnit 作为一个库来模拟浏览器,以便渲染 JS,并返回我想要的内容。

HtmlPage myPage = ((HtmlPage) webClient.getPage("http://www.instagram.com/instagram"));

但是此调用会导致以下异常:

Exception in thread "main" com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException: 403 Forbidden for http://d36xtkk24g8jdx.cloudfront.net/bluebar/3a30db9/scripts/webfont.js

所以它无法访问该脚本,但如果我正确解释它,它只是用于字体加载,这是我不需要的。我用谷歌搜索了如何告诉它忽略页面的某些部分,并发现 this线程。

webClient.setWebConnection(new WebConnectionWrapper(webClient) {
@Override
public WebResponse getResponse(final WebRequest request) throws IOException {
if (request.getUrl().toString().contains("webfont")) {
System.out.println(request.getUrl().toString());
return super.getResponse(request);
} else {
System.out.println("returning response...");
return new StringWebResponse("", request.getUrl());
}
}
});

使用该代码,异常消失,但源(或页面标题,或我尝试过的任何其他内容)似乎是空的。 “返回响应...”打印一次。

我也对不同的方法持开放态度。最终,单个字符串中的整个页面源代码对我来说就足够了,但我需要 JS 来执行。

最佳答案

带有 JS 的 HtmlUnit 并不是一个好的解决方案,因为 JavaScript 引擎 Mozilla Rhino 对于许多 JS 页面不起作用并且存在很多问题。

您可以像网络驱动程序一样使用 PhantomJs:

PhantomJs

关于java - 使用 HtmlUnit 访问动态网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26820522/

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