gpt4 book ai didi

java - OkHttp3 抓取的 HTML 页面不完整,需要 JavaScript 吗?

转载 作者:行者123 更新时间:2023-12-02 10:49:14 26 4
gpt4 key购买 nike

我正在从一个运行良好的网站上抓取一些 JSON 数据。我可以登录并下载必要的数据。但是,在一种情况下,我必须下载 HTML 页面才能从 HTML 中提取信息。

我修改了请求 header ,使其与使用 Chrome 开发人员选项 (F12) 可见的请求 header 相匹配。

Request request = new Request.Builder().url(url)
.header("Host", "www.host.com")
.header("Connection", "Keep-Alive")
.header("Cache-Control", "max-age=0")
.header("Upgrade-Insecure-Requests", "1")
.header("User-Agent",this.user_agent_user_for_this_session)
.header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8")
.header("Accept-Encoding", "gzip, deflate, br")
.header("Accept-Language", "en-US,en;q=0.9,fr;q=0.8,nl;q=0.7,de;q=0.6,af;q=0.5")
.get().build();

Response response = client.newCall(request).execute();

String html = IOUtils.toString(new GZIPInputStream(response.body().byteStream()));

我收到一个 HTML 文件,但它比从 Chrome 手动保存的 HTML 文件(源另存为)要小得多。我注意到 HTML 文件中存在各种 ng(角度)引用,这让我想知道我是否只收到了某个未完成的 javascript 过程的第一部分?

此外,下载的 HTML 看起来与 Chrome 第一个 WebView 中下载的 HTML 文件相同(我复制粘贴了内容,文件大小相同)。

那么我应该允许对请求进行一些额外的分析吗?

最佳答案

如果它是有角度的页面,那么你就不走运了 - 整个页面是在运行时生成的,所以实际的 index.html 有点小。

作为解决方法,我使用 Selenium 在 headless 浏览器中实际打开页面,并在初始化角度应用程序(也称为构建 DOM)后获取内容。

关于java - OkHttp3 抓取的 HTML 页面不完整,需要 JavaScript 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52302384/

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