Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过Node.js从xml检索URL?_Javascript_Xml_Node.js_Web Scraping - Fatal编程技术网

Javascript 如何通过Node.js从xml检索URL?

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&

我正在做网页抓取。目前我想废弃一个网站。我从robots.txt文件中获得了一个xml文件链接。现在我想从xml中读取所有url。但我不能这样做。有人能帮我弄清楚吗

XML格式:

<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);

        });
    })
})