使用Nokogiri刮掉Reddit(429个请求太多)

时间:2016-08-16 18:10:22

标签: ruby-on-rails ruby open-uri

我试图用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创建睡眠间隔?

2 个答案:

答案 0 :(得分:4)

Reddit有API

您可以在API中查询要删除的特定子reddit。考虑到高音量和嵌套评论,试图刮掉所有Reddit似乎是一场等待发生的噩梦。

看起来Reddit阻止了使用他们的公共API的能力。

答案 1 :(得分:2)

真正的答案是您需要设置用户代理。

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'))