0

我正在从网站“抓取”一些产品描述,并使用 importXML 将它们放入谷歌电子表格中。

它进展得相当顺利,但我很想纠正一个主要问题,我需要你的帮助!

有问题的网站禁止发布产品的人在产品描述中包含联系信息(通常是电子邮件地址)。有时人们会忽略该规则,并且无论如何都会包含联系信息。发生这种情况时,网站会自动隐藏产品描述中的联系信息,将其替换为 [obscured],例如“...请随时通过 [obscured] 与我联系”或类似的内容。[被遮蔽的] 以不同的颜色出现,并且网站显然对它们进行了不同的处理。

当这些产品描述被导入到我的电子表格中时,[obscured] 会导致抓取有点“碰撞”——描述文本在 [obscured] 之前停止,单词 [obscured] 单独出现在相邻的单元格中, [obscured] 之后的描述文本然后在第三个单元格中继续。

这种分离破坏了我的电子表格中的对齐方式和逻辑,因为具有 [模糊] 单词的产品描述会与那些没有的产品描述分开并不一致。

我希望能够让我的 importXML 或 XPath 适应这一点,并且基本上“忽略”[模糊]。我不介意它被包含在刮掉的描述中,但我想停止分解成 3 个独立的相邻单元格。

[obscured] 是“跨度”的一部分,它似乎偶尔位于我正在调用的描述类“desc”中。

有没有办法做到这一点?指示 importXML 导入有时可能出现在其中的跨度的“desc”类但“忽略/省略/异常”?

我在下面包含了源代码(Safari 中的检查元素):

<div class="desc descFull collapsed">
<span class="obscureText">[obscured]</span>

如前所述,此跨度仅出现在某些产品描述中,而不是全部。有谁知道我会在 importXML 中使用哪种语言来调用“desc”但忽略“span”,或者在遇到 [obscured] 时阻止拆分为 3 个单元格?

我现在的电话是

=ImportXML(A1,"//div[@class='desc']")

除非遇到 [obscured] 跨度,否则效果很好。

感谢您提供的任何帮助!

4

1 回答 1

0

除非 Google Drive 打破了 Xpath 的定义,否则 Xpath 不能像 CSS 选择器那样用于查询 CSS 类。

Xpath//div[@class='desc']只会匹配具有字面属性的div元素。它不会匹配,因为字符串不同。class"desc""desc descFull collapsed"

至于排除隐藏节点的文本,这将需要找到文本节点并排除,这将返回一个节点集,而不是一个字符串,并且您将无法使用 XPath 1.0 将它们连接在一起。如果 Google Drive 使用 XPath 2.0,则可以使用该链接问题中的技术。

于 2014-03-19T01:08:04.910 回答