我正在研究使用Nokogiri和CSS选择器的Ruby脚本。我正在尝试从HTML中抓取一些看起来像这样的数据:
<h2>Title 1</h2>
(Part 1)
<h2>Title 2</h2>
(Part 2)
<h2>Title 3</h2>
(Part 3)
是否只有通过指定代表起点和终点的Part 2
元素的文本,才能从h2
中进行选择?
Part 2
中感兴趣的数据是一个表,其中包含tr
和td
元素,没有任何class
或id
标识符。其他部分也有我不感兴趣的表。
page.css('table tr td')
在整页上,除了我要使用的表之外,还将从所有其他表中进行选择,如果可能的话,我想避免这种情况。
根据this question,恐怕没有CSS选择器可用于元素文本。首先提取“(第2部分)”,然后使用Nokogiri选择其中的表元素如何。
text = "" //your string, or content from a file
part2 = text.scan(/<h2>Title 2<\/h2>\s+(.+)?<h2>/ms).first.first
doc = Nokogiri::HTML(part2)
# continue select table elements from doc
注意:(第2部分)不能包含任何h2标记,否则正则表达式应该不同。