繁体   English   中英

对正在加载javascript的网站进行网络抓取(使用javascript)

[英]Web-scraping a website, that is being loaded with javascript (using javascript)

我正在尝试从足球/足球报道中收集阵容。 我决定从报表提供者处抓取数据,但是他们的网站上装有javascript。

更具体地说,让我们将此链接转到flashscores.co.uk match

首先,它们限制CORS,这意味着我使用allorigins.me避免了它,然后使用此代码:

function readurl(url, elementID){
    var url = "http://allorigins.me/get?url=" + encodeURIComponent(url) + "&callback=?";
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            document.getElementById(elementID).innerHTML = this.responseText;
        }
    };
    xhttp.open("GET", url, true);
    xhttp.send();
}

结果是这样的,并且一直看起来都一样(仍然是\\ n和\\ t,而不是实际内容)。 我想问题是flashscores网站正在使用javascript加载数据,但是allorigins.me直到整个网站加载后才“等待”。 这是另一种外观 ,似乎正在使用javascript加载。

理想的结果是收集两支球队的前11名(Allonso M.,Arrizabalaga K.,Azpilicueta C ....)。 我检查了网站,发现每个名称都在HTML标记内: <div class="name">PLAYER'S NAME HERE</div>

任何想法如何一次避免两个问题?

  1. CORS限制
  2. 在网络中“填充” JavaScript数据之前的延迟

我正在尝试使用客户端语言(没有PHP)。

谢谢 :)

您的问题有几个问题:

  1. CORS用于保护服务器端的资源,并且您需要客户端的资源,这些资源大部分是公共的,因此您不需要避免这种情况的方法。
  2. 问题不会在页面加载之前“等待”,问题是您需要自己运行这些脚本。

我建议您使用类似JSm的Node.js来完成此任务,这应该非常简单。

关于使用Node.js进行Web抓取(无需执行脚本)的精彩博客文章: 此处

JSS MNP官方页面: 此处

祝好运 !

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM