【问题标题】:Extracting 2 elements from ul using cheerio使用cheerio从ul中提取2个元素
【发布时间】:2016-09-22 06:37:42
【问题描述】:

我想从这个无序列表中的每个li 中提取 2 个元素:

<ul class="cookieAlertList padTop10">

      <li>

       <img src="images/cookieradar/iconHot.gif" />
       <div class="cookieAlertDesc">
       <a href="/P.aspx?p=16aa6d76104">
        Peanut Butter Chocolate Chunk
       </a>
       <br />
       <small>44 mins ago</small>
       </div>

      </li>

      <li>

       <img src="images/cookieradar/iconHot.gif" />
       <div class="cookieAlertDesc">
       <a href="/P.aspx?p=15936a56102">
        Oatmeal Wheatgerm Chocolate Chip
       </a>
       <br />
       <small>48 mins ago</small>
       </div>

      </li>

     </ul>

对于每个列表项,id 喜欢提取 cookie 名称(包含在元素中)和时间,包含在元素中。

我能够使用以下方法提取 2 个列表项:

var li = $('.cookieAlertList').find('li');

但不确定如何继续。

【问题讨论】:

    标签: javascript jquery node.js cheerio


    【解决方案1】:

    像这样:

    var cheerio = require('cheerio');
    
    // some HTTP Requests to scrape the page content.. 
    
    var $ = cheerio.load(html);
    
    var result = [];
    
    $('ul.cookieAlertList li').each(function(el) {
        var $div = $(el).find('div.cookieAlertDesc');
        var obj = {
            cookieName: $div.find('a').text(),
            time: $div.find('small').text()
        };
        result.push(obj);
    });
    
    console.log('result', result); // JSON.stringify(result, null, 3);
    

    【讨论】:

    • 酷,这会打印出正确数量的 cookie 对象,但是 cookieName 和 time 字段是空白的。知道为什么会发生这种情况吗?
    • 啊,我认为 .each() 中的函数需要 2 个参数,i 和 el。现在似乎可以工作了。
    • 我认为这并不重要。需要的可以通过。
    • 您是否在发出 http 请求以抓取页面内容?
    猜你喜欢
    • 2022-11-26
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 2020-09-27
    • 1970-01-01
    • 2021-06-19
    相关资源
    最近更新 更多