REBOL解析HTML:得到错误“称号没有价值”

问题描述:

我试图解析HTML页: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 

不明白为什么这是行不通的,因为我得到错误“的称号有没有值“

+0

我假设你有某种复制/粘贴错误编辑你的问题。但是如果你真的在你的字符串中有一个换行符,把它分割为''headli'和'ne'>'',这是一个多行字符串,并且会尝试将换行符作为内容的一部分,所以我把它放回去了这是你问题的真正根源。 – HostileFork

+0

@HostileFork哎呀愚蠢的错误,我在火车上编码:) – user310291

+0

请注意,** {无论}通过{无论} **将具有相同的效果,通过{无论} ** ...例如。 THRU包括TO的搜索逻辑以及数据的消耗。 – HostileFork

我假设你使用Rebol/view,因为免费版本不会做https,虽然rebol3会。

如果你想看看是否有什么工作,你应该看看解析的返回值,你会看到它是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!)" 
+0

rebol3是否支持https?在Win 32 v 2.101.0.3.1上,我得到: ''>>阅读https://www.dzone.com **访问错误:缺少端口方案:https – Edoc

因为第一to停止之前匹配的字符串,使thru开始在<h1 ...>中第一次出现的开始,而不是在第二,你可能会认为它不工作,最有可能。在尝试搜索第二个之前,您需要跳过第一个匹配项。你可以做到这一点使用两个thru规则如图另一个答案,或者只是重复规则的两倍,以避免重复它:

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

通知最终to end规则,这将使parse回报true如果你的规则,在实现成功结束。 to end规则是一个占位符规则,因为您不在乎跟随</h1>的内容,而是希望无论如何都能达到输入的结尾。

编辑:测试您提交的代码在这里工作正常不变。编辑你的问题实际上已经解决了错误的原因。我可以用您的original code重现您的问题。