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 に答える