1001tracklistsのトラックリストページからデータをスクレイピングできるようにしたいと思います。URLの例は次のとおりです。
http://www.1001tracklists.com/tracklist/25122_lange-intercity-podcast-115-2013-03-06.html
ページにデータがどのように表示されるかの例を次に示します。
Above & Beyond - Black Room Boy (Above & Beyond Club Mix) [ANJUNABEATS]
このページからすべての曲を次の形式で引き出したいと思います。
$byArtist - $name [$publisher]
このページのHTMLを確認すると、私が求めているコンテンツがHTML5メタマイクロデータ形式で保存されているように見えます。
<td class="" id="tlptr_433662">
<a name="tlp_433662"></a>
<div itemprop="tracks" itemscope itemtype="http://schema.org/MusicRecording" id="tlp5_content">
<meta itemprop="byArtist" content="Above & Beyond">
<meta itemprop="name" content="Black Room Boy (Above & Beyond Club Mix)">
<meta itemprop="publisher" content="ANJUNABEATS">
<meta itemprop="url" content="/track/103905_above-beyond-black-room-boy-above-beyond-club-mix/index.html">
<span class="tracklistTrack floatL"id="tr_103905" ><a href="/track/103905_above-beyond-black-room-boy-above-beyond-club-mix/index.html" class="">Above & Beyond - Black Room Boy (Above & Beyond Club Mix)</a> </span><span class="floatL">[<a href="/label/1037_anjunabeats/index.html" title="Anjunabeats">ANJUNABEATS</a>]</span>
<div id="tlp5_actions" class="floatL" style="margin-top:1px;">
「tlp_433662」値のCSSセレクターがあります。ページ上の各曲には、独自のIDがあります。1つには「tlp_433662」があり、次の1つには「tlp_433628」などがあります。
NokogiriとXPathを使用して、トラックリストページにリストされているすべての曲を抽出する方法はありますか?スクレーパーが関連データの各セットを抽出するデータをループするように、以下にリストされている「データ」に対して「それぞれ」を「実行」したいと思うでしょう。これが私のRubyプログラムの始まりです:
require 'rubygems'
require 'nokogiri'
require 'open-uri'
url = "http://www.1001tracklists.com/tracklist/25122_lange-intercity-podcast-115-2013-03-06.html"
data = Nokogiri::HTML(open(url))
# what do do next? print out xpath loop code which extracts my data.
# code block I need help with
data.xpath.........each do |block|
block.xpath("...........").each do |span|
puts stuff printing out what I want.
end
end
私が行う方法を知っている私の最終的な目標は、このRubyスクリプトをSinatraに持っていき、データを「Web化」して、このYouTubeビデオに示すようにいくつかの素晴らしいTwitterブートストラップCSSを追加することです:http ://www.youtube.com/watch ?v = PWI1PIvy4A8
データをスクレイピングして配列を印刷できるように、XPathコードブロックを手伝ってもらえますか?