You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Nokogiri抓取MusicRadar样本链接仅获3条,求排查及批量打开方法

问题分析与解决

一、为什么只抓到3条链接?

核心有两个原因:

  1. XPath范围限制过严
    你的代码用//div/a/@href仅抓取div标签下的<a>链接,但页面中大量样本链接实际嵌套在<article>、<li>、<header>等其他容器内,不在div节点下,因此被过滤遗漏。

  2. 静态抓取无法获取动态加载内容
    该页面可能通过JavaScript实现滚动加载更多样本内容,而open-uri只能获取页面初始的静态HTML,那些滚动后才加载的链接无法被抓取到。

修复抓取逻辑的代码

先放宽XPath范围,抓取所有<a>标签的href再筛选:

require 'open-uri'
require 'nokogiri'

base_url = 'https://www.musicradar.com/news/tech/free-music-samples-royalty-free-loops-hits-and-multis-to-download'
html = OpenURI.open_uri(base_url)
doc = Nokogiri::HTML(html)

# 抓取所有a标签的href,筛选以-samples结尾的链接
sample_hrefs = doc.xpath('//a/@href').select { |href| href.value.match?(/\-samples$/) }
# 将相对路径转换为完整URL
full_sample_links = sample_hrefs.map { |href| URI.join(base_url, href.value).to_s }

puts full_sample_links

如果上述代码仍抓不全内容,说明页面存在动态加载,需使用支持JavaScript的爬虫工具(如selenium-webdriver):

require 'selenium-webdriver'
require 'nokogiri'

driver = Selenium::WebDriver.for :chrome
driver.get('https://www.musicradar.com/news/tech/free-music-samples-royalty-free-loops-hits-and-multis-to-download')

# 模拟滚动到底部,触发动态加载
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
sleep 3 # 等待内容加载完成

doc = Nokogiri::HTML(driver.page_source)
sample_hrefs = doc.xpath('//a/@href').select { |href| href.value.match?(/\-samples$/) }
full_sample_links = sample_hrefs.map { |href| URI.join(driver.current_url, href.value).to_s }

driver.quit
puts full_sample_links

二、批量打开抓取到的链接

方法1:使用launchy gem(跨平台)

  1. 先安装gem:
gem install launchy
  1. 添加批量打开逻辑:
require 'launchy'

# 遍历链接数组,逐个打开
full_sample_links.each do |url|
  Launchy.open(url)
  sleep 1 # 避免短时间打开过多页面导致浏览器卡顿
end

方法2:使用系统原生命令(无需额外gem)

根据操作系统差异执行对应命令:

full_sample_links.each do |url|
  if RUBY_PLATFORM =~ /darwin/ # macOS
    system("open #{url}")
  elsif RUBY_PLATFORM =~ /mswin|mingw/ # Windows
    system("start #{url}")
  else # Linux
    system("xdg-open #{url}")
  end
  sleep 1
end

内容的提问来源于stack exchange,提问作者tony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 15:15:33