0

我正在尝试使用 Ruby 和 Nokogiri 抓取一个包含大约 10 列的页面,其中大多数列都非常简单,因为它们具有唯一的类名。但是,其中一些具有类 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,但无济于事。

4

1 回答 1

1

要获取 下的所有数据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

上述方法将返回一个Nokogiri::XML::Element对象数组,其中包含id=eventLineOpener-XXXX.

此外,要提取这些对象中的每一个的内容Nokogiri::XML::Element,您需要遍历这些对象中的每一个并在这些对象上使用该text方法。例如:

doc.css('div[id*=eventLineOpener]')[0].text
于 2012-12-15T17:17:45.113 回答