为了账号安全,请及时绑定邮箱和手机立即绑定

Cheerio,如何将其提取到 json 中?

Cheerio,如何将其提取到 json 中?

FFIVE 2022-01-07 19:34:02
我有一个类似这样的 html 页面,其中包含 2 个产品和基于条件的不同版本,在这种情况下,1 个产品有 4 个条件<div class="listing_item"><ul class="listedItem listedItem--searched">    <li>        <a href="itemproduct.html">            <div class="itemImg">                <img class="lazy" alt="Item name 1" src="some.jpg" data-original="some.jpg" style="display: block;">                </div>                <div class="icon">                </div>            </a>            <a href="item1productdetails.html" class="itemName">Item name 1</a>            <div class="tableHere product">                <div class="sameSearchButton">                    <a href="etctectect">            Search item here                    </a>                </div>                <div class="row not-first ng-star-inserted">                    <div class="col-xs-1 ng-star-inserted">                        <strong>                                        Condition 1                        </strong>                    </div>                    <div class="col-xs-4 ng-star-inserted">10 USD</div>                    <div class="col-xs-2">stock 10</div>                    <div class="col-xs-2 ng-star-inserted">                        <div class="asSpinner">                            <select id="quantity_511377" class="form-control product-listing__qty-to-buy" name="quantityToBuy">                                <option value="1">1</option>                                <option value="2">2</option>                                <option value="3">3</option>                                <option value="4">4</option>                                <option value="5">5</option>                                <option value="6">6</option>                                <option value="7">7</option>                                <option value="8">8</option>                            </select>                        </div>                    </div>
查看完整描述

1 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

$('div[class="row not-first ng-star-inserted"]')加载所有div具有类项目row,not-first并ng-star-inserted在同一时间。错误在于您正在文档中搜索此类项目,而您没有缩小当前的搜索范围li,例如


    $('.listing_item ul li').each(function(i, elm) {


         cardName = $(this).find('a[class=itemName]').text().trim();



         $(this).find('div[class="row not-first ng-star-inserted"]').each(function(){

             var obj = {

                 condition: $(this).find('div[class="col-xs-1 ng-star-inserted"]').text().trim(),

                 price: $(this).find('div[class="col-xs-4 ng-star-inserted"]').text().trim(),

                 stock: $(this).find('div[class="col-xs-2"]').text().trim()

         };



   });

所以$ => $(this).find


编辑


要构建问题中的 JSON,您可以执行以下操作:


    var myJSON = {};

    $('.listing_item ul li').each(function(i, elm) {


         cardName = $(this).find('a[class=itemName]').text().trim();

         myJSON[cardName] = [];



         $(this).find('div[class="row not-first ng-star-inserted"]').each(function(){

             var obj = {

                 condition: $(this).find('div[class="col-xs-1 ng-star-inserted"]').text().trim(),

                 price: $(this).find('div[class="col-xs-4 ng-star-inserted"]').text().trim(),

                 stock: $(this).find('div[class="col-xs-2"]').text().trim()

             };

             myJSON[cardName].push(obj);



   });

未测试。


查看完整回答
反对 回复 2022-01-07
  • 1 回答
  • 0 关注
  • 207 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信