【问题标题】:Hidden parts in html source code while scraping (python)抓取时html源代码中的隐藏部分(python)
【发布时间】:2015-07-03 15:00:04
【问题描述】:

所以我想从这个 url 中抓取“购买价格”整数: https://rsbuddy.com/exchange?id=5502

但是当我查看源代码时,我无法达到这些价格。 BeautifulSoup 刮刀也没有。这是 BeautifulSoup 的输出:

<div class="col-md-7" id="buy-price">
    ---
</div>

但是当我使用 chrome '检查元素'时,我实际上 am 能够看到这个价格:

<div id="buy-price" class="col-md-7">29,990 gp</div>

为什么这部分代码是“隐藏的”?仅仅是因为他们不希望人们从他们的网站上抓取信息吗? 有没有办法解决这个问题?

提前致谢

编辑: 我通过使用 chrome 工具跟踪 javascript 流量找到了答案。 显然,即使 api.rsbuddy.com 没有给你任何东西,它确实使用了 api: https://api.rsbuddy.com/grandExchange?a=guidePrice&i=5502

【问题讨论】:

    标签: python html screen-scraping hidden


    【解决方案1】:

    如果页面的某些部分是通过 JavaScript 插入的,那么最好的办法是使用 selenium 之类的东西和 PhantomJS 作为驱动程序。

    Python 绑定非常易于使用,这将允许 JavaScript 在浏览器中执行,您可以从那里获取价格。

    如果您想了解更多信息,请告诉我,我很乐意为您提供帮助。

    【讨论】:

      【解决方案2】:

      价格大概是由 JavaScript 输入的。他们可能正在使用某种 AJAX 来获取价格。您必须调查他们的 JavaScript 才能获得所需的数据。

      澄清一下,它本身并不是“隐藏的”,只是不在 HTML 中。当您检查元素时,它会查看包含它开始的 HTML 以及 JavaScript 对其所做的任何更改的文档。

      【讨论】:

      • 我明白了,这就解释了,谢谢。那么,如果我深入研究 JS 代码,您认为我能够找到这些价格吗?
      • 好吧,我认为您不会在 JS 代码中找到价格。假设我是正确的并且 JS 使用的是 AJAX,如果你挖掘得足够深,你应该能够找到它们来自的 http 地址(并​​且所述地址可能会根据项目名称/id/w/e 自动生成)。
      • 谢谢。我请开发人员帮我解决这个问题。如果有人知道是否有可能,那就是他们:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-08
      • 1970-01-01
      • 1970-01-01
      • 2017-02-28
      • 1970-01-01
      • 2014-10-03
      • 1970-01-01
      相关资源
      最近更新 更多