【问题标题】:How to HTTP-GET HTML like a browser?如何像浏览器一样 HTTP-GET HTML?
【发布时间】:2018-08-12 06:53:38
【问题描述】:

TL;DR;

我想知道 Apache HttpClientJsoup 的不同之处,特别是我如何实现这一点,像浏览器一样接收 HTML 页面(在本例中为 google.com .

问题

当我在浏览器中执行a Google search 时,它看起来像这样:

这显然是预期的行为。 使用Apache HttpClientJsoup 我得到一个非常相似的结果,如下所示:

正是我想要的,因为它包含响应中的所有内容

在我的 HTTP-GET 请求中,我刚刚收到:

其中的 HTML 文本 缺少 内容

缺少什么?

我想要有关结果的所有信息,正如您在最后一张图片中看到的那样,甚至没有 result URL 特色。

方法

我尝试添加这些标题:

Accept  
text/html,application/xhtml+xm…plication/xml;q=0.9,*/*;q=0.8
Accept-Encoding 
gzip, deflate, br
User-Agent  
Mozilla/5.0 ...

他们并没有改变任何东西。

【问题讨论】:

  • 尝试设置用户代理
  • @luksch 我说过我在 Approaches 中尝试过

标签: html apache http jsoup http-get


【解决方案1】:

Jsoup 只能下载静态 html 网页。一些数据由网页上显示的 javascript 加载,由浏览器执行。这些脚本可能会以异步方式从不同的 url 加载网页内容的某些部分。

要获取此内容,您应该使用 HtmlUnit 或 Selenium 等工具。

【讨论】:

  • “使用 Apache HttpClient 或 Jsoup 我得到了一个非常相似的结果:Jsoup screenshot 这正是我想要的,因为它包含了响应中的所有内容。” 你看?我说它仍然是我想要的,因为它包含所有重要信息,例如搜索结果的 url。
【解决方案2】:

我认为标题是要走的路。我确信这只是我的 Kotlin HTTP 库的问题。

Accept  
text/html,application/xhtml+xm…plication/xml;q=0.9,*/*;q=0.8
Accept-Encoding 
gzip, deflate, br
User-Agent  
Mozilla/5.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-28
    • 2011-09-01
    • 2021-05-19
    • 2020-04-03
    • 2021-04-14
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    相关资源
    最近更新 更多