Rebol 解析 HTML:获取错误"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

看不出为什么它不起作用,因为我会收到错误"标题没有值"

我假设您正在使用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!)"

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

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

注意最终的to end规则,如果您的规则成功达到终点,它将使parse返回trueto end规则是占位符规则,因为您不在乎</h1>的内容,而是想到达输入的结尾。

edit :测试您提交的代码从此处 nOtchanged 正常工作。您的问题的编辑实际上修复了错误的原因。我可以用您的原始代码重现您的问题。

最新更新