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

时间:2018-10-07 12:03:21

标签: javascript web-scraping

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

更具体地说,让我们来看看这个link to a 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();
}

结果是like this,从头到尾看起来都一样(仍然是\ n和\ t,不是真实内容)。我想问题是flashscores网站正在使用javascript加载数据,但是allorigins.me直到整个网站加载后才“等待”。这是another look,似乎正在使用javascript加载。

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

有什么主意如何一次避免两个问题?

  1. CORS限制
  2. 使用javascript中的数据“填充”网络之前的延迟时间

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

谢谢:)

1 个答案:

答案 0 :(得分:0)

您的问题有几个问题:

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

我建议您对Node.js使用类似JSm的工具来完成此任务,

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

JSmnpm官方页面:here

祝你好运!