【发布时间】:2015-03-19 11:06:56
【问题描述】:
我正在尝试从website 中抓取曲目列表。我的相关代码是:
page.css('ol').each do |line|
subarray = line.text.strip.split(" - ")
end
这使数组将第一个艺术家带入第一个索引(如我所愿),但将曲目和曲目二的艺术家添加到第二个索引中,如下所示:
subarray[0] = Rick Wilhite
subarray[1] = Magic Water [Still Music]
Edward
subarray[2] = Into A Better Future [Giegling]
Kassem Mosse
subarray[3] = Zolarem [Mikrodisko Recordings]
After Hours
我包含了嵌套标签,所以我的代码如下:
page.css('ol li').each do |line|
subarray = line.text.strip.split(" - ")
end
但这似乎只留下subarray[0] 显示"Klara Lewis" 和subarray[1] 显示"Shine [Editions Mego]",这是曲目列表中的最后一首曲目。所有其他索引值都是空白的。
更复杂的是,我想从最终成为曲目值的内容中删除唱片标签。我相信正确的正则表达式是\[[\d\D]*?\],但我的印象是这需要在数据进入数组之前应用,以避免迭代数组时涉及的复杂性。我尝试将它作为第二个分隔符传递给拆分(连同' - '),但它不起作用,我还尝试通过将代码更改为:
page.css('ol').each do |line|
subarray = line.text.strip.split("\[[\d\D]*?\]")
end
但这似乎也不起作用。任何人都可以帮助我或给我正确的指示吗?
【问题讨论】:
标签: ruby arrays regex web-scraping