在 hpricot/nokogiri 中搜索 h2 元素之前的所有元素
我正在尝试解析维基词典条目以检索所有英语定义。我能够检索所有定义,问题是某些定义是其他语言的。我想做的是以某种方式仅检索具有英文定义的 HTML 块。我发现,在存在其他语言条目的情况下,可以通过以下方式检索英语定义之后的标头:
header = (doc/"h2")[3]
所以我只想搜索此标头元素之前的所有元素。我认为使用 header.preceding_siblings()
可能可以,但这似乎不起作用。有什么建议吗?
I am attempting to parse a Wiktionary entry to retrieve all english definitions. I am able to retrive all definitions, the problem is that some definitions are in other languages. What I would like to do is somehow retrieve only the HTML block with English definitions. I have found that, in the case that there are other language entries, the header after the english definitions can be retrieved with:
header = (doc/"h2")[3]
So I would like to only search all the elements before this header element. I thought that may be possible with header.preceding_siblings()
, but that does not seem to be working. Any suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以通过 Nokogiri 使用访客模式。此代码将删除从其他语言定义的 h2 开始的所有内容:
You can make use of the visitor pattern with Nokogiri. This code will remove everything starting from the other language definition's h2:
以下代码使用Hpricot。
它从英语语言的标题 (h2) 获取文本,直到下一个标题 (h2),或者如果没有其他语言,则直到页脚:
示例:
The following code is using Hpricot.
It gets the text from the header for the english language (h2) until the next header (h2), or until the footer if there are no further languages:
Example:
对于 Nokogiri:
这将迭代您在第 2 行中指定为
stop_node
的任何节点之前的所有节点。For Nokogiri:
This will iterate over all the nodes preceding whatever node you designate as
stop_node
in line 2.