在 Ruby 里抓取 Google,通常意味着 open-uri + Nokogiri,然后是一份代理清单,接着又是一个无头浏览器。这里给出便宜的替代方案:一次 HTTP 调用,就把 Google 结果以结构化 JSON 返回——不用 Nokogiri,不用代理。
为什么 Ruby 里自己动手抓取代价高昂
- IP 封锁——Google 几分钟内就封锁数据中心 IP;你不得不租用轮换的住宅代理。
- CAPTCHA——请求量一上来就会触发,破解成本越积越多。
- 无头浏览器——JS 渲染的结果逼你用 Ferrum/Selenium,又慢又重。
- Nokogiri 腐化——Google 的标记一变,你的 CSS 选择器就悄悄返回
nil。
便宜的做法:一次请求
只用标准库——不装任何 gem:
require "net/http"
require "json"
uri = URI("https://api.serp.cheap/v1/search")
req = Net::HTTP::Post.new(uri, {
"X-API-Key" => ENV["SERP_CHEAP_API_KEY"],
"Content-Type" => "application/json",
})
req.body = { q: "best crm software", gl: "us" }.to_json
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
JSON.parse(res.body)["organic"].each do |r|
puts "#{r['position']}. #{r['title']}\n #{r['link']}"
end
没有代理,没有浏览器,也没有需要照看的解析器。
或者使用官方 gem
gem install serpcheap
require "serpcheap"
client = SerpCheap::Client.new(ENV["SERP_CHEAP_API_KEY"])
res = client.search(q: "best crm software", gl: "us")
puts res.organic.first.title
用 Rails?gem install serpcheap-rails 会加上初始化器和配置,让你在任何地方注入客户端。
价格如何
| 每次查询价格 | |
|---|---|
| 实时结果 | $0.0006 |
| 缓存结果 | $0.0003 |
| 注册赠送 | 100 次搜索 |
按量付费,$0.75/千次起,积分有效期 12 个月——比自建抓取器所需的住宅代理更便宜。参见最便宜的 SERP API 对比。
你会用到的参数
gl——结果所属国家。见分国家的本地 SEO。hl——界面语言。page——从 1 开始计数;见分页。tbs——用于获取最新结果的时间过滤器。
下一步
试试 serp.cheap
复制代码片段,填入你的密钥,就能从 Ruby 抓取 Google 了。注册即送 100 次免费搜索——无需信用卡;之后按量付费,$0.75/千次起,积分有效期 12 个月。
- 获取你的免费 API 密钥 →
- 更想用信用卡付款?serp.cheap 也上架了 RapidAPI(约 $0.90/千次)和 Apify(约 $1.50/千次)。