获取URL的HTML内容更新

时间:2019-03-05 21:51:54

标签: javascript node.js real-time-updates real-time-data

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

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

2 个答案:

答案 0 :(得分:1)

您可以在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
  • 无法访问文档,因此您需要使用评估版
  • http s 可能需要添加--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

答案 1 :(得分:0)

我认为您需要检查什么是websocket。这将是一个不错的开始; https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API