Ruby on rails 如何使用无标签的Nokogiri刮取HTML?
我需要使用Nokogiri解析一个本地HTML文件,但是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
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)/)