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

时间:2015-10-14 19:40:11

标签: 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>
       <loc>http://www.xxxx.com/</loc>
       <changefreq>test</changefreq>
    </url>
</urlset>

这是我的代码:

        var fs = require('fs')
          , flow = require('xml-flow')
          , inFile = fs.createReadStream(xml_file_url)
          , xmlStream = flow(inFile)
        ;

        xmlStream.on('tag:urlset', function(err,url) {
            if(err)
                return console.log(err);
          console.log(url);
          res.send('Check your console!')

        }); 

我想要来自loc&amp;的所有网址把它们推到阵列上。我怎么解决这个问题?提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以选择tag:loc并将每个标签推送到数组:

Looking for line magic timeit 
{'load': 'load', 'psource': 'psource', 'lsmagic': 'lsmagic', 'logstart': 'logstart', 'popd': 'popd', 'loadpy': 'loadpy', 'ls': <alias ls for 'ls -F --color'>, 'install_ext': 'install_ext', 'cd': 'cd', 'pastebin': 'pastebin', 'colors': 'colors', 'prun': 'prun', 'cp': <alias cp for 'cp'>, 'lk': <alias lk for 'ls -F -o --color %l | grep ^l'>, 'who_ls': 'who_ls', 'lf': <alias lf for 'ls -F -o --color %l | grep ^-'>, 'install_profiles': 'install_profiles', 'autocall': 'autocall', 'ldir': <alias ldir for 'ls -F -o --color %l | grep /$'>, 'bookmark': 'bookmark', 'connect_info': 'connect_info', 'll': <alias ll for 'ls -F -o --color'>, 'pprint': 'pprint', 'mkdir': <alias mkdir for 'mkdir'>, 'system': 'sx', 'automagic': 'automagic', 'whos': 'whos', 'rerun': 'rerun', 'rmdir': <alias rmdir for 'rmdir'>, 'save': 'save', 'tb': 'tb', 'lx': <alias lx for 'ls -F -o --color %l | grep ^-..x'>, 'more': 'less', 'pylab': 'pylab', 'pdef': 'pdef', 'killbgscripts': 'killbgscripts', 'precision': 'precision', 'quickref': 'quickref', 'pinfo': 'pinfo', 'pwd': 'pwd', 'psearch': 'psearch', 'autosave': 'autosave', 'reset': 'reset', 'magic': 'magic', 'dhist': 'dhist', 'edit': 'edit', 'logstop': 'logstop', 'gui': 'gui', 'xdel': 'xdel', 'xmode': 'xmode', 'cat': <alias cat for 'cat'>, 'alias_magic': 'alias_magic', 'store': 'store', 'man': 'man', 'recall': 'recall', 'debug': 'debug', 'logon': 'logon', 'page': 'page', 'history': 'history', 'profile': 'profile', 'logstate': 'logstate', 'ed': <IPython.core.magic.MagicAlias object at 0x7f7a7113d6d0>, 'pycat': 'pycat', 'pushd': 'pushd', 'timeit': 'timeit', 'set_env': 'set_env', 'unalias': 'unalias', 'rehashx': 'rehashx', 'hist': <IPython.core.magic.MagicAlias object at 0x7f7a7113d490>, 'install_default_config': 'install_default_config', 'mv': <alias mv for 'mv'>, 'env': 'env', 'qtconsole': 'qtconsole', 'load_ext': 'load_ext', 'rm': <alias rm for 'rm'>, 'config': 'config', 'dirs': 'dirs', 'run': 'run', 'reset_selective': 'reset_selective', 'pfile': 'pfile', 'pinfo2': 'pinfo2', 'who': 'who', 'matplotlib': 'matplotlib', 'less': 'less', 'notebook': 'notebook', 'unload_ext': 'unload_ext', 'doctest_mode': 'doctest_mode', 'sx': 'sx', 'macro': 'macro', 'clear': 'clear', 'pdb': 'pdb', 'alias': 'alias', 'logoff': 'logoff', 'reload_ext': 'reload_ext', 'time': 'time', 'sc': 'sc', 'rep': <IPython.core.magic.MagicAlias object at 0x7f7a7113d550>, 'pdoc': 'pdoc'}
built_in trap:
args= [u'']
kwargs= {}
fn= timeit <type 'str'>
str object timeit is not callable...