通过类属性的部分匹配获取所有元素

Mat*_*cer 10 ruby xpath nokogiri

我正在尝试使用Nokogiri来显示URL的结果.(基本上是抓取一个URL).

我有一些HTML类似于:

<p class="mattFacer">Matty</p>
<p class="mattSmith">Matthew</p>
<p class="suzieSmith">Suzie</p>
Run Code Online (Sandbox Code Playgroud)

所以我需要找到所有以"matt"开头的元素.我需要做的是保存元素的值和元素名称,以便下次可以引用它.所以我需要捕获

"Matty" and "<p class='mattFacer'>"
"Matthew" and "<p class='mattSmith'>"
Run Code Online (Sandbox Code Playgroud)

我还没有弄清楚如何捕获元素HTML,但这是我到目前为止所拥有的元素(它不起作用!)

doc = Nokogiri::HTML(open(url))
tmp = ""
doc.xpath("[class*=matt").each do |item|
    tmp += item.text
end

@testy2 = tmp
Run Code Online (Sandbox Code Playgroud)

Mic*_*ohl 15

这应该让你开始:

doc.xpath('//p[starts-with(@class, "matt")]').each do |el|
  p [el.attributes['class'].value, el.children[0].text]
end
["mattFacer", "Matty"]
["mattSmith", "Matthew"]
Run Code Online (Sandbox Code Playgroud)

  • XPath有许多函数,比如`starts-with`,例如`contains`和`substring`.http://www.w3.org/TR/xpath/#corelib (5认同)