JavaScript函数,用于同步抓取HTML和JS

JavaScript函数,用于同步抓取HTML和JS,javascript,php,scrape,Javascript,Php,Scrape,是否有支持如下同步JavaScript函数的库 function getPageHTML(url){ // scrape HTML from external web page return html; } function getPageJS(url){ // scrape final JavaScript variable results from external web page return js; } 我喜欢pjscrape背后的概念,但不

是否有支持如下同步JavaScript函数的库

function getPageHTML(url){
     // scrape HTML from external web page
     return html;
}

function getPageJS(url){
     // scrape final JavaScript variable results from external web page
     return js;
}

我喜欢pjscrape背后的概念,但不想使用命令行脚本。我不介意使用PHP,但我希望我的函数是同步的。

没有Javascript环境,建议使用同步网络从外部服务器检索数据。这不是Javascript的设计方式。Javascript设计为使用异步I/O,其中结果将通过承诺或回调返回,而不能直接从函数调用返回

Ajax中的A代表异步。这是在浏览器中从Javascript发出网络请求的基础。从技术上讲,浏览器可以执行同步Ajax调用,但由于各种原因,不建议这样做,例如在调用期间它会挂起浏览器中的UI,而且在许多情况下它也被弃用,因为使用同步Ajax几乎从来都不是一个好主意。此外,来自浏览器的Ajax调用被限制在网页所来自的同一来源或明确允许跨来源请求的服务器上。因此,您不能期望通过Ajax调用获取internet上的任意页面。您将无法从浏览器网页Ajax调用中获取大多数其他网页

浏览器擅长的是异步网络,在异步网络中,结果通过回调或承诺在将来某个时候异步返回,剩下的Javascript将继续运行到那时。这就是您应该如何对网络请求的访问进行编码

如果您想在浏览器中从某个外部站点获取刮取的结果,首选的体系结构是设置一个服务器来为您完成这项工作。网页中的Javascript将向您自己的服务器发出Ajax调用,要求它删除特定的网站。对于可以从哪些主机发出请求没有跨源限制的服务器将获取内容,将其刮取到所需的结果中,然后将得到的刮取数据返回到Ajax调用

因此,您可以在客户机中设计一个基于承诺的接口,该接口可以异步工作,如下所示:

getPageJS(someUrl).then(function(data) {
    // process data here
}).catch(function(err) {
    // process error here
});

对它叫ajax,应该在浏览器上运行吗?或者在node.js服务器上?仅供参考,Javascript中的同步网络要么完全不受支持,这取决于环境,要么是一个非常糟糕的主意。@jfriend00我正在寻找一个与jQuery$.get等效的PHP抓取工具。我只想在函数中返回结果。那么,这是一个PHP问题?如果是这样,为什么您的问题显示Javascript?不清楚您在问什么。@jfriend00我要的是一个javascript函数,它返回传递给函数的url处的javascript变量和HTML内容