【问题标题】:Using cheerio to scrape a page won't work well使用cheerio 抓取页面效果不佳
【发布时间】:2020-09-08 10:40:57
【问题描述】:

我有一个如下所示的页面:

                           <li title="Sulphurous" class='item q-440-5 q-440-border-5' data-tip="top" >
<a href="/effect/Sulphurous"><div class='item-icon' style='background-image:url(),url(/images/440/particles/64_94x94.png)'></div><div class='tag bottom-right'>avg 207.61</div><div class='tag top-left'>sulphurous</div></a>
<span style='display:none'>Unusual Sulphurous</span></li>



                            <li title="Purple Confetti" class='item q-440-5 q-440-border-5' data-tip="top" >
<a href="/effect/Purple%20Confetti"><div class='item-icon' style='background-image:url(),url(/images/440/particles/7_94x94.png)'></div><div class='tag bottom-right'>avg 57.39</div><div class='tag top-left'>p.fetti</div></a>
<span style='display:none'>Unusual Purple Confetti</span></li>

我想提取titletag bottom-right。结果应如下所示:

name: Unusual Sulphurous
price: avg 207.61

name: Unusual Purple Confetti
price: avg 57.39

如何使用cheerio 提取avg 207.61avg 57.39

我只能解析标题。这是我的脚本:

    $('li').each(function(){
        var name = ($(this).attr('title'));
        var price = ($(this).attr('tag bottom-right')); 

        nameList.push({
                  name: name,
                  price: price,
        });
    });

但是价格是undefined。我试过tag_bottom-righttag-bottom-righttag.bottom-right.tag.bottom-right,但还是不行。

也试过这样做:

    $("tag.bottom-right").each(function() {
        let id = ($(this).data("tag.bottom-right"));
     });

但还是undefined。我做错了什么?

【问题讨论】:

    标签: javascript html jquery parsing cheerio


    【解决方案1】:

    你没有使用正确的 css:

    let prices = $(".tag.bottom-right").map((i, el) => $(el).text())
    

    【讨论】:

    • 谢谢。所以不可能在$('li').each(function(){ ... });里面使用let price = $(一一得到单一价格?
    • 你可以在 each 内部做一些事情,但 each 不会返回任何东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多