如何在Ruby中的头元素之间进行选择

如何在Ruby中的头元素之间进行选择,ruby,css-selectors,nokogiri,Ruby,Css Selectors,Nokogiri,我正在开发一个使用Nokogiri和CSS选择器的Ruby脚本。我试图从HTML中提取一些数据,如下所示: <h2>Title 1</h2> (Part 1) <h2>Title 2</h2> (Part 2) <h2>Title 3</h2> (Part 3) 在整个页面上,除了我要查找的表之外,我还将从所有其他表中进行选择,如果可能的话,我希望避免这种情况。根据,恐怕没有CSS选择器处理元素文本。首先提取第2部分,然后

我正在开发一个使用Nokogiri和CSS选择器的Ruby脚本。我试图从HTML中提取一些数据,如下所示:

<h2>Title 1</h2>
(Part 1)
<h2>Title 2</h2>
(Part 2)
<h2>Title 3</h2>
(Part 3)
在整个页面上,除了我要查找的表之外,我还将从所有其他表中进行选择,如果可能的话,我希望避免这种情况。

根据,恐怕没有CSS选择器处理元素文本。首先提取第2部分,然后使用Nokogiri选择其中的表元素怎么样

text=//您的字符串或文件中的内容 part2=text.scan/Title 2\s++?/ms.first.first doc=Nokogiri::HTMLpart2 继续从文档中选择表元素
第2部分不能包含任何h2标记,或者正则表达式应该不同。

如果您知道这些表将是静态的,并且您需要的数据将始终位于第二个表中。您可以执行以下操作:

page.css('table')[1].css('tr')[3].css('td')
这将获得页面上的第二个表,访问该表的第四行,并获得该行的所有值


我还没有对此进行测试,但如果我需要的表没有类或标识符,我会这样做

我可能会将此作为第一次尝试:

需要“nokogiri” doc=Nokogiri::HTML\n第2部分\n
一旦有了表,就可以很容易地从中获取数据。有很多例子可以说明如何做到这一点。

我可能会将此作为第一次尝试:

需要“nokogiri” doc=Nokogiri::HTML\n第2部分\n 用于查找当前节点后面的节点的技巧。有很多下一个和以前的方法,所以请仔细阅读它们,因为它们对于这种情况非常有用


最后,使用上面的示例向我们展示了Nokogiri以更友好的输出返回的内容。除非必须输出HTML,否则您不会使用它。

欢迎使用SO!请参阅和链接的页面和。如果一位同事把纸上的问题递给你,然后走开,你能理解并回答吗?如果没有,你想知道什么?这正是我们需要的信息,否则我们必须做出很多假设和猜测。你试了什么?为什么它不起作用呢?CSS选择器并不能真正胜任这项工作。相反,您最好使用XPath,它有一套更丰富的工具来查看嵌入的文本和同级。不要使用正则表达式来搜索HTML。如果HTML更改,模式很容易被破坏或泄漏。而是使用解析器。
page.css('table')[1].css('tr')[3].css('td')