【问题标题】:How to get child of div in cheerio如何在cheerio中获得div的孩子
【发布时间】:2019-04-12 18:52:35
【问题描述】:

我正在与cheerio 合作,但我想获得<div class="card"> 的儿童div 的href 值。

<div class="Card">  
   <div class="title">
    <a target="_blank" href="test">
        Php </a>
    </div>
    <div>some content</div>
    <div>some content</div>
    <div>some content</div>
 </div>

我正确获得了第一个孩子,但我想获得 div class=title childern a href 值。我是 node 新手,我已经搜索过了,但没有得到合适的答案。

var jobs = $("div.jobsearch-SerpJobCard",html);

这是我的脚本

 const rp = require('request-promise');
 const $  = require('cheerio');
 const potusParse = require('./potusParser');
 const url = "";

 rp(url)
   .then((html)=>{
     const Urls = [];
      var jobs = $("div.Card",html);


      for (let i = 2; i < jobs.length; i++) {
         Urls.push(
                $("div.Card  > div[class='title'] >a", html)[i].attribs.href
     );
   }
  console.log(Urls);


   })

     .catch(err => console.log(err));

【问题讨论】:

  • 您发布的 HTML 不正确 class="Card 错过了结束引号,但这可能是复制粘贴的事情
  • 是的,只是复制粘贴
  • var hrefs = []; $('div.Card .title a').each(function(index, element) { hrefs.push(element.href); }); - 这应该可以满足您的需要
  • 不,它无法返回 nll 数组 []
  • 非常不清楚您要实现的目标,请更新 HTML 以匹配您要执行的任务。

标签: javascript arrays node.js cheerio


【解决方案1】:

看起来像这样:

$('.Card').map((i, card) => {
  return {
    link: $(card).find('a').text(),
    href: $(card).find('a').attr('href'),
  }
}).get()

【讨论】:

  • 是的,我一直在寻找正确的东西,感谢您的回复。我只想问一个问题,我可以从节点中的2 days5 days 之类的字符串生成日期吗?就像我在2 days ago 上发布的详细信息一样,我可以从该字符串创建日期?
  • 是的,您正在寻找自然语言日期解析器,我相信有一个很好的 js 库。
猜你喜欢
  • 2023-04-03
  • 1970-01-01
  • 2018-04-28
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
  • 1970-01-01
  • 2018-04-02
  • 1970-01-01
相关资源
最近更新 更多