我希望能够从 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。一个将有“tlp_433662”,下一个将有“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 以“网络化”数据并添加一些不错的 Twitter 引导 CSS,如以下 youtube 视频所示:http ://www.youtube.com/watch ?v=PWI1PIvy4A8
你能帮我处理 XPath 代码块,以便我可以抓取数据并打印数组吗?