首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >OkHttp3抓取的网页不完整,需要javascript吗?

OkHttp3抓取的网页不完整,需要javascript吗?
EN

Stack Overflow用户
提问于 2018-09-13 03:46:27
回答 1查看 35关注 0票数 0

我从一个工作得很好的网站上收集了一些JSON数据。我可以登录并下载必要的数据。然而,在一种情况下,我必须下载一个HTML页面来从HTML中提取信息。

我已经修改了请求头,使它们与使用Chrome developer options (F12)可见的头相匹配。

代码语言:javascript
复制
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的第一个网络视图中下载的HTML文件相同(我复制粘贴的内容和文件大小相同)。

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

EN

回答 1

Stack Overflow用户

发布于 2018-09-13 03:50:01

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

作为变通方法,我使用Selenium在无头浏览器中实际打开页面,并在angular应用程序初始化后获取内容(也就是构建了DOM )。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52302384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档