从没有API的网站获取数据/创build一个API

我需要从网站获取一些数据(用户将改变)。 然而,“守望先锋”(Overwatch Stats)没有“好”的API。 是否有可能在JavaScript(使用Node.js)通过HTML标签或sorting获取这些数据?

例如,这是源代码中的一行:

<span class="summary-hero-name">McCree</span> 

而且页面上显示的3个英雄每个都有class级summary-hero-name ,有什么办法可以参考这个数据吗?

所以我想通了,应该做一些更多的研究。 我通过使用称为scrape-it的节点包来完成这个任务。

 <scrape-it>("https://masteroverwatch.com/profile/pc/us/calvin-1337", { title: "span.summary-hero-name" }).then(page => { console.log(page); // {title: 'McreeWidowmakerBastion' } }); 

我相信这篇文章会有所帮助。 我想使用AJAX来提出这样的要求:…

 <html> <head> <script type="text/javascript"> function go(){ var xhr = new XMLHttpRequest(); xhr.open("GET", "https://masteroverwatch.com/profile/pc/us/calvin-1337", false); xhr.onreadystatechange = function(){ if (xhr.readyState == 4) { document.write(xhr.responseText); } else { document.write("nope"); } } xhr.send();} </script> </head> <body onload="go()"> </body> </html> 

通常情况下,如果它在同一个域上,这将工作,但是,我得到了错误:“没有”Access-Control-Allow-Origin“标题出现在请求的资源上,因此Origin'null'不允许访问。 这显然是一个安全function。 似乎跨源资源共享(CORS)是要走的路。 祝你好运。

您可以使用YQL(Yahoo查询语言)。 点击下面的链接来查看一个例子,我已经使用YQL和xpath来获取作为json的英雄摘要。 你现在可以parsing这个JSON来获得这些英雄的属性。

https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D'https%3A%2F%2Fmasteroverwatch.com%2Fprofile%2Fpc%2Fus%2Fcalvin -1337 '%20于是%20xpath%3D' %2F%2Fdiv%5B%40class%3D%22summary列表%22%5D%2Fdiv%5B%40class%3D%22summary排容器%22%5D%2Fdiv%5B %40class%3D%22row%22%5D'&格式= JSON和诊断=真ENV =商店%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=