获取 URL 的 HTML 内容更新

Get HTML content update of an URL

基本上我想更新网页内容, https://www.investing.com/indices/indices-futures

在 Dow 30 中,最后一个值正在自我更新(来自 Investing.com 服务器的实时更新),我想知道是否有任何方法可以捕获值的变化 而无需 再次请求该网站,以便我可以异步更新我的代码。由于我在网上找到的有关更改通知的所有信息都是基于他们自己的 html,但在我的情况下它是外部的 url,所以我在这里要求获得一些见解

我想你需要检查什么是websocket。这将是一个很酷的开始; https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API

您可以在 chrome 控制台中添加一些代码并每秒跟踪此值以通知您。

let last_value = -1
let class_selector = 'pid-8873-last'
setInterval(function() {
  let v = document.getElementsByClassName(class_selector)[0].innerText
  if (v != last_value) {
    console.log("Value as been updated to " + v)
    last_value = v
  }
}, 1000)

> Value as been updated to 25,799.5
> Value as been updated to 25,798.5

但您必须打开浏览器,并在更新值时创建一个 ajax 请求。 如果你不想要任何浏览器,而是 运行 进入服务器,你可以检查 PhantomJS


使用 PHANTOMJS 编辑

他们需要进行一些更新才能与 PhantomJS 一起使用。

  • 您需要将 let 替换为 var
  • 文档无法访问,因此您需要使用评估
  • https 可能需要添加 --ssl-protocol=any

./test.js

var page = require('webpage').create();
page.open('https://www.investing.com/indices/indices-futures', function(status) {
  var last_value = -1

  setInterval(function() {
    var value = page.evaluate(function() {
      return document.getElementsByClassName('pid-8873-last')[0].innerText
    })

    if (value != last_value) {
      console.log("Value as been updated to " + value)
      last_value = value
    }
  }, 1000)
//  phantom.exit()
})

然后 运行 它来自同一目录:

# phantomjs test.js 
Value as been updated to 25,799.0