【问题标题】:Extract html tags and data from unstructured string within JSON object从 JSON 对象中的非结构化字符串中提取 html 标签和数据
【发布时间】:2014-10-20 10:09:21
【问题描述】:

我正在使用 NodeJS 和 Express 来调用 Eventbrite 的 Web 服务。从下面的 JSON 对象中,我需要在它们出现时提取 img 标签和相关数据(src、width、height)。

[ { name: 'Sense 5K - Austin Pre-Registration',
    url: 'http://austinpreregister.eventbrite.com/?aff=SRCH',
    start: '2014-10-01 09:00:00',
    description: '<P><IMG STYLE="display: block; margin-left: auto; margin-right: auto;" SRC="https://evbdn.eventbrite.com/s3-s3/eventlogos/90039995/about.png" ALT="" WIDTH="568" HEIGHT="138"></P>\r\n<P><IMG STYLE="vertical-align: middle; display: block; margin-left: auto; margin-right: auto;" SRC="https://evbdn.eventbrite.com/s3-s3/eventlogos/90039995/bluedawntour1.jpg" ALT="" WIDTH="568" HEIGHT="227"></P>',
    venue: 
     { city: 'Austin',
       name: '',
       country: 'United States',
       region: 'TX',
       longitude: -76.956325,
       postal_code: '',
       address_2: '',
       address: '',
       latitude: 38.861568,
       country_code: 'US',
       id: 5936809,
       'Lat-Long': '38.861568 / -76.956325' },
    organizer: 
     { url: 'http://www.eventbrite.com/o/sense-5k-6113542315',
       description: '\r\nAlong this enchanting journey you will encounter five Sense Scenes--each crafted to trigger an individual sense.The event is crowned with Sense Live, an unforgettable show and after party featuring pyrotechnics, dazzling special effects, a professional EDM DJ, live acrobatic entertainment, heart-pounding music, and the rhythm of your dancing. The purpose of Sense 5K is not to compete, but to experience! Every Sense 5K event benefits a local charity.\r\n \r\n',
       long_description: '\r\nAlong this enchanting journey you will encounter five Sense Scenes--each crafted to trigger an individual sense.The event is crowned with Sense Live, an unforgettable show and after party featuring pyrotechnics, dazzling special effects, a professional EDM DJ, live acrobatic entertainment, heart-pounding music, and the rhythm of your dancing. The purpose of Sense 5K is not to compete, but to experience! Every Sense 5K event benefits a local charity.\r\n ',
       id: 6113542315,
       name: 'Sense 5K' } } ]

来自此 API 的响应各不相同(有时不包含图像,有时仅包含图像,有时在其他 html 中包含图像),因此我正在寻找一种干净的方式来运行整个 JSON 对象,查找 img 标签,以及当它们出现时处理它们,而不管它们在对象中的何处出现。

【问题讨论】:

    标签: html json node.js web-services parsing


    【解决方案1】:

    使用以下 JavaScript 和 jQuery:

    var returnedObject = JSON.parse(returnedJSON);
    $.each(returnedObject, function(index, value) {
        var $element = $(value.description);
        var images = $element.find('img');
        $.each(images, function(index, value) {
            console.log(value);
        });
    });
    

    【讨论】:

    • OP 明确指出图像可以出现在对象的任何位置。此答案仅在 description 属性中查找。
    • 为什么要使用 jquery?其次,在 NodeJS 的服务器端使用 jquery 的最佳选择是什么?我在抓取 html 页面和操作 DOM 时使用了 Cheerio,但在这种情况下,我正在尝试遍历 JSON。
    猜你喜欢
    • 2021-05-15
    • 2016-02-04
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多