【问题标题】:Cheerio Get Image Src With No ClassCheerio 获取没有类的图像 Src
【发布时间】:2018-05-12 13:05:32
【问题描述】:

尝试使用 Cheerio 提取 img 源,但 img 没有类。好像

<div class="container_c89a5 lazyLoadContainer_b1038">
<img height="80" src="https://stuff.com" srcset="https://stuff.com" width="80">
</div>

我尝试了几种不同的方法来选择图像源,但没有成功。

var $ = cheerio.load(html);
    $('div.item_54fdd').each(function(i, element) {
        var a = $(this);
        var title = a.find('.title_9ddaf').text(); //works great
        var image = a.find('div.container_c89a5').first('img').attr('src');  //no luck
        var image = a.find('div.container_c89a5 > img').attr('src');  //no luck

【问题讨论】:

    标签: jquery node.js cheerio


    【解决方案1】:

    您是否尝试过使用find()? 这对我有用:

    a.find('.container_c89a5').find('img').attr('src');
    

    使用eq(i)通过索引选择第一个img标签

    a.find('.container_c89a5').children('img').eq(0).attr('src');
    

    【讨论】:

    • 其中任何一个都不走运。现在我认为它是未定义的,因为图像是延迟加载的,所以在 jquery 发生之前实际上什么都没有:/
    • 你可以尝试在 jsfiddle 中复制你的场景吗?
    • @gitterio 你能解释一下它的工作原理吗,它根本不起作用
    【解决方案2】:

    您要做的就是检查 DOM:

    console.log(.container_c89a5 .lazyLoadContainer_b1038)
    

    之后您会看到 DOM json 格式。 你可以通过这种方式选择img:

    console.log(.container_c89a5 .lazyLoadContainer_b1038).next()) or .children())
    

    之后您将看到 DOM 和所有新事物,您可以使用 .data 或 .src 访问,只需使用 console.log 检查 DOM

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-17
      • 2018-12-18
      • 1970-01-01
      • 2017-09-24
      • 1970-01-01
      • 2017-03-22
      • 1970-01-01
      • 2021-07-14
      相关资源
      最近更新 更多