我有一个可能很大的文件(100+ Mb)的url,如何使用访存将其保存在本地目录中?
我环顾四周,但是关于如何执行此操作似乎没有很多资源/教程。
谢谢!
所以我正在制作一个用于学习目的的小爬虫,最终我应该得到网站上页面的树状结构。
我一直在绞尽脑汁试图让这些要求正确。这或多或少是我所拥有的:
var request = require('request');
function scanPage(url) {
// request the page at given url:
request.get(url, function(err, res, body) {
var pageObject = {};
/* [... Jquery mumbo-jumbo to
1. Fill the page object with information and
2. Get the links on that page and store them into arrayOfLinks
*/
var arrayOfLinks = ['url1', 'url2', 'url3'];
for (var i = 0; i < arrayOfLinks.length; i++) {
pageObj[arrayOfLinks[i]] = scanPage[arrayOfLinks[i]];
}
});
return pageObj;
}
Run Code Online (Sandbox Code Playgroud)
我知道这段代码在很多层面上都是错误的,但它应该让您了解我正在尝试做什么。
我应该如何修改它才能使其正常工作?(如果可能的话,不使用承诺)
(您可以假设该网站具有树状结构,因此每个页面仅具有指向三个页面下方页面的链接,因此采用递归方法)
我有一个promise-returns函数,可以执行一些异步操作,让我们调用它functionToRepeat()
.
我正在尝试编写该函数repeatFunction(amount)
,以便它将启动承诺,等待完成,再次启动它,等待完成,等等一定时间.这repeatFunction(amount)
也应该是可以的,以便我可以在执行后链接其他东西.
这是我的尝试:
function functionToRepeat(){
let action = new Promise(function(resolve,reject){
setTimeout(function(){
console.log("resolved!");
resolve()}
,1000);
})
return action
}
function repeatFunction(amount) {
if(amount==0){
return Promise.resolve();
}
return functionToRepeat().then(function(){
repeatFunction(amount-1);
});
}
repeatFunction(5).then(function(){
console.log("DONE!");
})
Run Code Online (Sandbox Code Playgroud)
这成功地链接了我的承诺(或者接缝,我在控制台中每秒得到一个"解决!").然而,在第一个承诺结束.then()
后,我试图在我repeatFunction(5)
发生之后链接,而不是在所有5个结束之后!
所以在我的控制台中,我得到:
解决!DONE!解决!解决!解决!解决!
我做错了什么,我应该改变什么?
我正在制作一个带有梦魇的小型刮刀,但加载所有外部资源需要很长时间并消耗大量带宽.
我怎样才能加载基本页面html(没有图像,CSS等)?
我在网上找不到任何相关信息,也许我在找错了地方.
javascript ×3
node.js ×3
web-scraping ×2
asynchronous ×1
es6-promise ×1
fetch ×1
fetch-api ×1
nightmare ×1
promise ×1