关于前端:抓取淘宝商品详情时用到的一些正则表达式

39次阅读

共计 761 个字符,预计需要花费 2 分钟才能阅读完成。

一、去除数据里的 <img> 标签

delHtmlTag(str) {str = str.replace(/<[^>]+>/g, ''); // 去掉所有的 html 标记
    return str.replace(/\s+/g,''); // 去掉所有空格
}

二、详情数据处理

/<\s*img\s+[^>]*?size\s*=\s*(.*?)[^>]*?\/?\s*>/i.test(el) // 判断是否是 <img></img> 标签包裹的数据 
/<img.*?(?:>|\/>)/gi.test(el) // 间接验证是否为 <img></img> 标签包裹,用上一种可能报错 
/^https:\/\/.*/i.test(imgObj.url) // 判断数据是否是以 https 结尾的图片地址 
el.replace('<txt>','<p>').replace('</txt>','</p>') // 将数据中的 <txt></txt> 标签替换为 <p></p>
data.data.wdescContent.pages.forEach(el => {if (/<\s*img\s+[^>]*?size\s*=\s*(.*?)[^>]*?\/?\s*>/i.test(el)) {
        let imgObj = {url: this.delHtmlTag(el)
        };
        var https = /^https:\/\/.*/i.test(imgObj.url);
        if (!https) {imgObj.url = 'https:' + imgObj.url;}
        this.detailImgList.push(imgObj);
    }else{this.goodsDetailObj.detailContent += el.replace('<txt>','<p>').replace('</txt>','</p>');
    }
});

三、测试图如下


正文完
 0