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

使用Nokogiri解析ChromeDriver存储页面无法获取链接列表,求排查

问题分析与解决办法

嘿,我一眼就瞅出问题所在啦!你犯了一个很容易踩的小坑——直接把URL字符串传给了Nokogiri::HTML()方法,但这个方法的本职工作是解析HTML文本内容,不是帮你从网络上抓取网页。

你看,现在Nokogiri把你输入的URL当成了一段普通文本,自动生成了一个包含<p>标签的简单HTML结构,自然找不到你想要的链接列表啦。

正确的操作步骤

要实现抓取页面并解析链接的需求,得分两步走:

  1. 先通过网络请求获取目标页面的原始HTML内容
  2. 再把获取到的HTML内容传给Nokogiri进行解析

方法一:用open-uri(最简单,Ruby标准库自带)

open-uri是Ruby内置的库,能帮你快速发起HTTP请求并获取页面内容,代码示例如下:

require 'nokogiri'
require 'open-uri'

# 目标URL
target_url = 'https://chromedriver.storage.googleapis.com/index.html?path=79.0.3945.36/'

# 第一步:获取页面的HTML内容
html_content = open(target_url).read

# 第二步:用Nokogiri解析HTML
doc = Nokogiri::HTML(html_content)

# 提取所有a标签的href属性(也就是你要的链接列表)
links = doc.css('a').map { |link| link['href'] }

# 输出结果
puts links.inspect

方法二:用Net::HTTP(更灵活,适合复杂请求)

如果你需要更精细地控制HTTP请求(比如设置请求头、处理重定向等),可以用Ruby内置的Net::HTTP库:

require 'nokogiri'
require 'net/http'

uri = URI('https://chromedriver.storage.googleapis.com/index.html?path=79.0.3945.36/')
response = Net::HTTP.get_response(uri)

if response.is_a?(Net::HTTPSuccess)
  # 请求成功,解析HTML
  doc = Nokogiri::HTML(response.body)
  links = doc.css('a').map { |link| link['href'] }
  puts links.inspect
else
  # 请求失败,打印错误信息
  puts "页面请求失败:#{response.message}"
end

额外提醒

  • 确保你已经安装了nokogiri gem:如果没装,运行gem install nokogiri即可
  • open-uri是Ruby标准库的一部分,不需要额外安装

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 10:12:29