获取 ID 以 "ABC"开头的所有节点



我正在尝试使用 Ruby 和 Nokogiri 抓取一个包含大约 10 列的页面,其中大多数列都非常简单,因为它们具有唯一的类名。但是,其中一些具有类 ID,这些类 ID 似乎将长数字字符串附加到标准类名之后。

例如,游戏时间都带有.eventLine-time,球队名称带有.team-name,但这个特定的具有,例如:

<div class="eventLine-book-value" id="eventLineOpener-118079-19-1522-1">-3&nbsp;-120</div>

.eventLine-book-value不是特定于此列的,因此它没有用。每个游戏的 13 位数字都不同,请尝试如下内容:

def nodes_by_selector(filename,selector)
file = open(filename)
doc = Nokogiri::HTML(file)
doc.css(^selector)
end

给我留下了错误。我已经看到 ^ 和 ~ 用于其他语言,但我对此很陌生,我尝试寻找在 id=eventLineOpener-XXXX 下获取所有数据的方法,但无济于事。

要获取 id=eventLineOpener-XXXX 下的所有数据,您需要传递 'div[id*=eventLineOpener]' 作为选择器:

def nodes_by_selector(filename,selector)
  file = open(filename)
  doc = Nokogiri::HTML(file)
  doc.css(selector)  #doc.css('div[id*=eventLineOpener]')
end

上面的方法将返回一个具有id=eventLineOpener-XXXXNokogiri::XML::Element对象的数组。

此外,若要提取每个Nokogiri::XML::Element对象的内容,需要循环访问其中每个对象,并在这些对象上使用 text 方法。例如:

doc.css('div[id*=eventLineOpener]')[0].text

相关内容

  • 没有找到相关文章

最新更新