rebol解析html:得到错误“title没有价值”

时间:2017-09-13 06:01:06

标签: rebol

我正在尝试解析一个html页面:

url: https://dzone.com/articles/2-entity-framework-alternatives-or-give-me-data
html: read url

parse html [
    to {<h1 class="article-title" itemprop="headline">}
    thru {<h1 class="article-title" itemprop="headli
    ne">}copy title to {</h1>}
]

probe title

无法理解为什么它不起作用,因为我收到错误“标题没有价值”

2 个答案:

答案 0 :(得分:3)

我认为您使用的是Rebol / view,因为免费版本不会通过rebol3执行https。

如果你想查看某些内容是否有效,你应该查看该解析的返回值,并且你会看到它false这意味着有一个问题你的解析规则。无论如何,这对我有用,虽然标签周围的引号不是必需的,因为<>都是字符串分隔符。

>> parse html [
    thru <h1 class="article-title" itemprop="headline">
    thru <h1 class="article-title" itemprop="headline">
    copy title to </h1> to end
]
== true

>> trim/head/tail title
== "2 Entity Framework Alternatives (or Give Me Data!)"

答案 1 :(得分:1)

它最不起作用,因为第一个to在匹配的字符串之前停止了,因此thru在第一次出现{{1}时开始,而不是你可能预期的第二个。在尝试搜索第二个匹配项之前,您需要跳过第一个匹配项。您可以使用另一个答案中显示的两个<h1 ...>规则来实现此目的,或者只是重复两次规则以避免重复:

thru

请注意最终的parse html [ 2 thru <h1 class="article-title" itemprop="headline"> copy title to </h1> to end ] 规则,如果您的规则成功到达终点,则会to end返回parsetrue规则是一个占位符规则,因为您不关心to end之后的内容,但想要到达输入的末尾。

编辑:测试您提交的代码可以正常运行未更改。编辑你的问题实际上已经解决了错误的原因。我可以使用您的original code重现您的问题。