Javascript 如何通过Node.js从xml检索URL?
我正在做网页抓取。目前我想废弃一个网站。我从robots.txt文件中获得了一个xml文件链接。现在我想从xml中读取所有url。但我不能这样做。有人能帮我弄清楚吗 XML格式:Javascript 如何通过Node.js从xml检索URL?,javascript,xml,node.js,web-scraping,Javascript,Xml,Node.js,Web Scraping,我正在做网页抓取。目前我想废弃一个网站。我从robots.txt文件中获得了一个xml文件链接。现在我想从xml中读取所有url。但我不能这样做。有人能帮我弄清楚吗 XML格式: <urlset> <url> <loc>http://www.xxxx.com/</loc> <changefreq>test</changefreq> </url> <url&
<urlset>
<url>
<loc>http://www.xxxx.com/</loc>
<changefreq>test</changefreq>
</url>
<url>
<loc>http://www.xxxx.com/</loc>
<changefreq>test</changefreq>
</url>
</urlset>
我希望所有的url从loc和推他们在一个数组。我怎样才能解决这个问题?提前感谢。您可以选择tag:loc和每个tag-push-to-array:
var fs = require('fs'),
flow = require('xml-flow'),
http = require('http');
var file = fs.createWriteStream('site.xml');
http.get('http://ajkerdeal.com/sitemap.xml', function(res) {
res.on('data', function(data) {
file.write(data);
}).on('end', function() {
file.end();
var inFile = fs.createReadStream("site.xml"),
xmlStream = flow(inFile);
var array = [];
xmlStream.on('tag:loc', function(url) {
array.push(url.$text);
});
xmlStream.on('end', function(url) {
console.log(array);
});
})
})
一个建议。如果您知道如何使用jQuery来遍历节点,请看一下我正在尝试读取的文件。但是我犯了一个错误。events.js:85投掷者;//未处理的“error”事件^error:enoint,在出现错误时打开“”(本机)我更新了答案。您应该阅读有关FS和创建流的更多信息。您只能将FS用于本地文件系统。在这种情况下,您需要从http下载文件,然后在本地进行处理
var fs = require('fs'),
flow = require('xml-flow'),
http = require('http');
var file = fs.createWriteStream('site.xml');
http.get('http://ajkerdeal.com/sitemap.xml', function(res) {
res.on('data', function(data) {
file.write(data);
}).on('end', function() {
file.end();
var inFile = fs.createReadStream("site.xml"),
xmlStream = flow(inFile);
var array = [];
xmlStream.on('tag:loc', function(url) {
array.push(url.$text);
});
xmlStream.on('end', function(url) {
console.log(array);
});
})
})