rebol 解析 html: 出现错误 "title has no value"

rebol parsing html: get error "title has no value"

我正在尝试解析 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

不明白为什么它不起作用,因为我收到错误 "title has no value"

我假设您使用的是 Rebol/view,因为免费版本不支持 https,而 rebol3 支持。

如果你想看看是否有问题,你应该查看解析的 return 值,你会看到它是 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!)"

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

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

注意最后的 to end 规则,如果您的规则成功到达终点,它将成为 parse return trueto end 规则是占位符规则,因为您不关心 </h1> 后面的内容,但无论如何都想到达输入的末尾。

编辑:从这里测试您提交的代码工作正常未更改。您的问题的编辑实际上已经解决了错误的原因。我可以用你的 original code.

重现你的问题