我正在研究使用Nokogiri和CSS选择器的Ruby脚本。我试图从html抓取一些数据,如下所示:
<h2>Title 1</h2>
(Part 1)
<h2>Title 2</h2>
(Part 2)
<h2>Title 3</h2>
(Part 3)
是否只有通过指定代表起点和终点的h2元素的文本才能从(第2部分)中进行选择?
第2部分中感兴趣的数据是一个包含tr和td元素的表,这些元素没有任何类或id标识符。其他部分也有我不感兴趣的表。整个页面上的诸如page.css('table tr td')之类的东西,除了我所追求的那些表之外,还会从所有其他表中选择,而我d尽可能避免这种情况。
根据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标记,否则正则表达式应该不同。