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 true
。 to end
规则是占位符规则,因为您不关心 </h1>
后面的内容,但无论如何都想到达输入的末尾。
编辑:从这里测试您提交的代码工作正常未更改。您的问题的编辑实际上已经解决了错误的原因。我可以用你的 original code.
重现你的问题
我正在尝试解析 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 true
。 to end
规则是占位符规则,因为您不关心 </h1>
后面的内容,但无论如何都想到达输入的末尾。
编辑:从这里测试您提交的代码工作正常未更改。您的问题的编辑实际上已经解决了错误的原因。我可以用你的 original code.
重现你的问题