使用cheerio进行Webscraping:删除或忽略子元素?

时间:2016-12-18 12:19:35

标签: javascript node.js cheerio

所以我有一个我想要抓的网站,结构如下:

<p><strong>some headline:</strong> some content etc. blabla </p>

<p><strong>some other headline:</strong> some more content etc. blabla </p>
// and so on...

我用cheerio刮擦它如下:

$('p strong').each(function(i, element){
      console.log($(this).text()); 
      //gets me the headline

      console.log("Parent:" + $(this).parent().text()); 
      //gets me the content, but unfortunately, also the headline again
    });

现在,我只是记录了所有内容,但后来我想保存标题&amp;内容在单独的变量中。但是,由于标题(在<strong>标签中找到)也是<p>标签的一部分,我的第二个命令(打算只获取内容,没有标题,因为我已经抓住了那个)不仅获得了内容,还获得了标题。如何分隔或删除<strong>标记中的所有内容,并将所有其余内容保存在<p>标记中,即仅保存内容?

1 个答案:

答案 0 :(得分:1)

删除标题元素可能最简单:

 .post(function(req, res) {
    var r = req.body;
    var i = 0;

    async.whilst(
        function() { return i < r.measurements.length; },
        function(callback) {
            Sensor.findByIdAndUpdate(
                r.measurements[i][0],
                {
                    $push: { measurements: { t: r.timestamp, v: r.measurements[i][1] } },
                    $set: { unit: r.measurements[i][2] }
                },
                { upsert: true, new: true, safe: true },
                function (err, result) {
                    if(err) console.log(err);
                    i++;
                    callback(err,result);
                }
            ); 
        },
        function(err) {
            if(err) console.log(err);
        }

    );
})