使用 Nokogiri 抓取 Reddit(429 请求太多)

Scraping Reddit using Nokogiri (429 too many requests)

我正在尝试使用 Nokogiri 抓取 Reddit,但是其中一个 运行 一直告诉我我提出了太多请求。

require 'nokogiri'
require 'open-uri'
url = "https://www.reddit.com/r/all"
redditscrape = Nokogiri::HTML(open(url))

OpenURI::HTTPError: 429 Too Many Requests

这不是只有一个要求吗?如果不是,我该如何为 Nokogiri 创建睡眠间隔?

Reddit 有一个 API

您可能会查询 API 以获取您想要抓取的特定子版块。考虑到高流量和嵌套评论,试图抓取所有 Reddit 似乎是一场等待发生的噩梦。

看起来 Reddit 正在阻止抓取功能以支持使用他们的 public API

真正的答案是你需要设置一个user-agent。

https://www.reddit.com/r/redditdev/comments/3qbll8/429_too_many_requests/

How to set a custom user agent in ruby

这让我可以使用 open-uri 和 nokogiri 并避免错误。

总结一下:

redditscrape = Nokogiri::HTML(open(url, 'User-Agent' => 'Nooby'))