Ruby on rails 如何使用无标签的Nokogiri刮取HTML?

Ruby on rails 如何使用无标签的Nokogiri刮取HTML?,ruby-on-rails,ruby,nokogiri,Ruby On Rails,Ruby,Nokogiri,我需要使用Nokogiri解析一个本地HTML文件,但是HTML没有任何带有类的s。它从文本开始 这是HTML: high prices in <a href="Example 1">Example 1</a><br> low prices in <a href="Example 2">Example 2</a><br> 它是同时列出所有内容,而不是逐个列出。如何更改Nokogiri代码,使其在输出中看起来像这样 high

我需要使用Nokogiri解析一个本地HTML文件,但是HTML没有任何带有类的
s。它从文本开始

这是HTML:

high prices in <a href="Example 1">Example 1</a><br>
low prices in <a href="Example 2">Example 2</a><br>
它是同时列出所有内容,而不是逐个列出。如何更改Nokogiri代码,使其在输出中看起来像这样

high prices in Example 1
low prices in Example 2

好的,Nokogiri将把该字符串封装在一个隐式的
..
中,因此文本将在一个

因此,您可以通过以下方式获得结构化的链接:

doc.xpath "//a"
“高”和“低”字符串将在单个文本块中。您可能需要使用一些正则表达式来提取它们,这在很大程度上取决于您的需求和数据,但以下是您所展示和要求的正则表达式:

doc.xpath('//p').text.scan(/^(high|low)/)

我不能确定这对您的实际需求有多大帮助,但希望它能为您指明方向。

谢谢!现在我可以得到示例和高/低部分。但它同时列出了所有内容,我根据你说的内容用一些代码编辑了我的问题,你能帮我一个一个列出吗?你正在做
doc.xpath('//p')。每一个
,都表明你完全忽略了我在第一段中说的内容,只有一个
。我再次编辑,但是我如何才能像问题的结尾那样打开
rails控制台
键入需要初始化的代码
doc
,然后键入
doc.xpath('//p').text.scan(//^(high | low)/)
,然后查看返回的内容。虽然我真的很担心Rails视图中有
s,但是输出没有!我说我的输出是这样的:示例1示例2[[“高”],[“低”]]“从我看到的教程中,它需要一些来获取文本。”然后你错过了教程的要点。可以使用标记内的参数进行搜索。Nokogiri还有CSS快捷方式,可以更轻松地搜索
class
id
参数。其思想是搜索标记或标记的一部分。使用XPath,您可以深入到文本节点。CSS在某种程度上受到限制,但也可以这样做。通常,我们在HTML中寻找帮助我们定位所需内容的路径点。你的例子很有限;这是整个HTML还是直接文本?请阅读“”。你的问题中有很多代码缺失。请创建一个演示该问题并将运行的最小示例。您没有提供足够的HTML。当然,您所指的文本在某种容器元素中。它不必是
div
high prices in Example 1
low prices in Example 2
doc.xpath "//a"
doc.xpath('//p').text.scan(/^(high|low)/)