【问题标题】:How to subtract a substring from a string in web harvest如何从网络收获中的字符串中减去子字符串
【发布时间】:2013-09-18 07:50:57
【问题描述】:

我是 webharvest 的新手,我正在使用它从网站获取文章数据,使用以下语句:

let $text := data($doc//div[@id="articleBody"])

这是我从上述语句中得到的数据:

The Refine Spa (Furman's Mill) was built as a stone grist mill along the on a tributary of Capoolong Creek by Moore Furman, quartermaster general of George Washington's army

Notable people

Notable current and former residents of Pittstown include:

我的问题是,是否可以从另一个字符串中减去一个字符串 在上面的示例中:内容中的“名人”。

这样可以吗?如果可能,请让我知道如何。谢谢。 有什么我可以这样做的吗:

if (*contains*($text, 'Notable people')) then $text := *minus*($text, 'Notable people') 

contains 是一个示例函数名,用于确定一个字符串是另一个字符串的子字符串, minus 是从另一个中删除子字符串的示例函数名称

想要的输出:

The Refine Spa (Furman's Mill) was built as a stone grist mill along the on a tributary of Capoolong Creek by Moore Furman, quartermaster general of George Washington's army

Notable current and former residents of Pittstown include:

【问题讨论】:

  • 当然可以,您可以通过手动搜索和制作子字符串或使用正则表达式/文字替换来做到这一点
  • 有一个 java 函数可以执行 String 减号 我发现这个:web-harvest.sourceforge.net/manual.php#function 关于如何定义自己的函数。如果有办法从 web 收获中调用 java 函数?

标签: java javascript web-scraping screen-scraping webharvest


【解决方案1】:

来自http://web-harvest.sourceforge.net/manual.php

正则表达式

在正文中搜索给定的正则表达式,并可选择用指定的模式替换找到的匹配项。 如果 body 是一个值列表,那么正则表达式处理器将应用于每个项目,最终执行结果是列表。

您只需要使用正确的正则表达式正确的regexp-pattern 和正确的regexp-result

【讨论】:

  • 我没有正则表达式,要替换的内容一直在变化。相反,我有要替换的内容。
  • 怎么改?被替换的字面量几乎是一个正则表达式,只是需要一些特殊字符转义。
  • 没有特定的数据模式,因此可以用正则表达式表示。作为替代方案,如果我们考虑将其自身的数据用作正则表达式,则转义元字符将变得更加复杂。请让我知道你的想法。
  • 当我尝试搜索转换为正则表达式时,我正在写关于更改 webharvest 源代码的文章。如果在 java 中完成,这很容易,因为您可以使用java.util.regex.Pattern.quote(String)。更改 webharvest 源代码似乎也很容易,因此您可以根据正则表达式操作代码自己添加文字替换操作。你也可以要求作者添加这样简单的操作,但网页似乎很旧
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多