如何使用Javascript执行客户端web抓取

How do I perform clientside web-scraping with Javascript?

本文关键字:web 抓取 客户端 执行 何使用 Javascript      更新时间:2023-09-26

如何在不违反同源策略的情况下做到这一点?我曾尝试过使用一个类似的网站,但没有成功http://anyorigin.com/但它不起作用。我该如何做到这一点?

EDIT 4/1/20-修复非功能代码:

事实证明YQL已经不起作用了,但我们不会让它阻止我们

事实证明,有一个名为CloudQuery的免费服务,我们可以很容易地使用它来完成同样的事情。不幸的是,在一段时间内,您可以拨打的电话数量限制非常低。

var myUrl = "https://cloudquery.t9t.io/query?url=https%3A%2F%2Fstackoverflow.com%2Fusers%2F5732397%2Fstardustgogeta&selectors=*:nth-child(2)%20%3E%20*:nth-child(1)%20%3E%20*:nth-child(1)%20%3E%20*:nth-child(1)%20%3E%20*:nth-child(1)%20%3E%20*:nth-child(2)%20%3E%20*%20%3E%20*:nth-child(1)";
fetch(myUrl).then(r => r.json()).then(r => {document.write(r.contents[0].innerText)});

老答案:

事实证明,雅虎的YQL(雅虎查询语言)可以使用XPath在线查找页面HTML的元素。

只需在您的文档中包含以下内容:

<div id="a"></div>
<script>
    var yqlCallback = function(data){
    	var rep = data.query.results.div;
        document.getElementById('a').innerHTML = "StardustGogeta's reputation is "+rep+'.';
    };
</script>
<script type='application/javascript' src="https://query.yahooapis.com/v1/public/yql?q=select%20content%20from%20html%20where%20url%3D'http%3A%2F%2Fstackoverflow.com%2Fusers%2F5732397%2Fstardustgogeta'%20and%20xpath%3D'%2F%2Fdiv%5B%40class%3D%22reputation%22%5D'&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=yqlCallback"></script>