【问题标题】:Scraping Node.js: Getting text from H2 header抓取 Node.js:从 H2 标头获取文本
【发布时间】:2014-11-03 11:45:27
【问题描述】:

好吧,为了好玩,我决定抓取所有在moodle网站上注册的上我大学的用户。

这是我用 Node.js 和 Cheerio 制作的程序,用于抓取网站,但我似乎无法获取 H2 标记内的文本。

这是我正在抓取的网站,http://moodle.ramapo.edu/user/profile.php?id=2101 我需要做的只是更改 ID 号,然后它会遍历每个学生。

     var request = require('request'),
     cheerio = require('cheerio');
     urls = [];

     //For just single page, eventually will loop through each page.
     request('http://moodle.ramapo.edu/user/profile.php?id=2101', function(err, resp, body){
     if (!err && resp.statusCode == 200) {
          var $ = cheerio.load(body);
          $('h2.main', '#yui_3_9_1_2_1410303448188_167').each(function(){
              //Not sure how to retrieve just the text name of person
          });
      console.log(urls);
      };
 });

如何只选择 H2 标记内的文本,以便将它们全部记录到我的控制台?

【问题讨论】:

    标签: html node.js web-scraping cheerio


    【解决方案1】:

    我不会那样做。下面是一个可以帮助你的代码 sn-p,你需要做的就是将它包装在一个循环中并遍历你想要抓取的 url。我还建议您查看本教程Scraping the Web With Node.js

    var express = require('express');
    var request = require('request');
    var cheerio = require('cheerio');
    var app     = express();
    
    app.get('/scrape', function(req, res){
    
      url = 'http://moodle.ramapo.edu/user/profile.php?id=2101';
    
      request(url, function(error, response, html){
            if(!error){
                  var $ = cheerio.load(html);
                  var name;
                  $('.main').filter(function(){
                    var data = $(this);
                    name = data.text();
                    console.log("name = " + name);
              })
            }
        res.send('Check your console!')
      })
    })
    
    app.listen('8081')
    exports = module.exports = app;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多