0

我使用 Google Refine 处理凌乱的产品数据表,以便使用 Magmi/Dataflow 配置文件对它们进行格式化以上传到 Magento 商店。我仍在使用 Google Refine 2.5,因为它是最新的稳定版本。

供应商数据表中的描述通常充满了二进制字符和凌乱的 HTML,我需要对其进行大量操作和重新格式化。

我知道我可以使用 GREL / Python / Jsoup 的某种组合来完成我的任务,但是我在使用不同语言的语法移动时遇到了麻烦。

我的数据如下所示:

Some product data here. <ul><li>Bullet one <li> Bullet two</ul> <br /> Some other product data here. <span id="product-image><img src="image.png"></span>

使用以下代码段:value.parseHtml().select("img").toString() 我能够解析我想要的图像标签,但我无法使用replace()GREL 中的函数删除/替换这些标签。我试图将表达式添加到替换函数的第一个字符串中,比如:value.replace(/value.parseHtml().select("img").toString()/, "")和其他类似的函数都无济于事。

对于我当前的项目,我需要:1)删除所有<img>, <div>, <p> and <span>标签,加上 2)解析 YouTube 视频链接并将其分离到单独的列中。

有人可以帮我语法/为我编写一个函数来完成这项任务(最好是对语法的解释)?

4

2 回答 2

0

删除标签

如果您只想替换标签,则无需使用parsHtml(). 只需value.replace('<img','')删除所有与图像相关的标签。value.replace('<div>','').replace('</div>','')对于所有<div>

提取图像

value.parseHtml().select("img").toString()选择标签及其内容。使用您的示例,它将返回:

<img alt=" style=" width:="" 62px="" src="http://sunlightsupply.s3.amazonaws.com/images/icon/product/logo_culus.gif" />

<img alt=" src=" http:="" sunlightsupply="" s3="" amazonaws="" com="" images="" icon="" product="" watchvideo="" gif="" complete="complete" />

提取 YouTube 链接

以下 GRELvalue.split('href=')[1].split('"')[0]将提取所有链接。

您可以将它们存储在一个新列中,并使用自定义方面删除所有不包含 youtube.com 的链接value.contains('youtube.com')

于 2015-02-11T18:16:11.413 回答
0

只需使用

value.replace(/<[^>]*>/,"")

这将删除所有 HTML 标签,<...> 中的所有内容

于 2021-10-29T11:13:42.617 回答