我正在尝试为字典中的每个单词下载.mp3文件。我从unix机器的/usr/share/dict/words
文件中获取了479831个单词。对于没有音频发音的单词,响应是404页面;对于正确单词,它是响应代码为200的.mp3文件。我可以下载一些文件,但没有适当的蒸汽。我尝试使用下面的代码下载的那些文件中没有音频,但我在两个不同的时间收到2个不同的错误。
第一个错误:
events.js:160
throw er; // Unhandled 'error' event
^
Error: socket hang up
at TLSSocket.onHangUp (_tls_wrap.js:1092:19)
at TLSSocket.g (events.js:286:16)
at emitNone (events.js:91:20)
at TLSSocket.emit (events.js:185:7)
at endReadableNT (_stream_readable.js:975:12)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9)
PS E:\Development\Node\webscraping>
第二个错误:有时Javascript堆内存不足。
var http=require('https');
var fs = require('fs');
var express = require('express');
var app = express();
var dir='./AudioPronunciationOfWords'
if (!fs.existsSync(dir))
fs.mkdirSync(dir);
fs.readFile('./wordsList.txt','utf8',function(error,content){
var listOfWords=content.split('\n');
var subList=listOfWords.slice(0,1000)
var baseUrl='https://ssl.gstatic.com/dictionary/static/sounds/de/0/';
subList.forEach(function(word){
var url=baseUrl;
url+=word+'.mp3';
setTimeout(function () {
var req=http.get(url, function(res) {
var status=res.statusCode;
console.log(status)
if (status===200) {
var filename=word+'.mp3';
var file = fs.createWriteStream(dir +'/'+ filename);
res.on('data', function(data) {
file.write(data);
})
.on('end', function() {
file.end();
})
.on('error',function(err){
console.log(err)
})
}
else
return;
});
req.end();
},10000)
app.listen('8081')
console.log('Magic happens on port 8081');
exports = module.exports = app;
我哪里错了?我应该这样做吗?我可以使用此脚本下载但不正确的一些单词。