Ошибка 503 при использовании ruby's open-uri для доступа к определенному сайту - PullRequest
1 голос
/ 25 декабря 2011

Я использовал приведенный ниже код для сканирования сайта, но думаю, что, возможно, я слишком много просканировал и получил полный запрет на использование сайта.Например, я все еще могу получить доступ к сайту через мой браузер, но любой код, связанный с open-uri и этим сайтом, выдает ошибку 503 недоступного сайта.Я думаю, что это специфично для сайта, потому что open-uri все еще отлично работает, скажем, с Google и Facebook.Есть ли обходной путь для этого?

require 'rubygems'
require 'hpricot'
require 'nokogiri'
require 'open-uri'

doc = Nokogiri::HTML(open("http://www.quora.com/What-is-the-best-way-to-get-ove$

topic = doc.at('span a.topic_name span').content
puts topic

1 Ответ

5 голосов
/ 25 декабря 2011

Есть обходные пути, но лучшая идея - быть хорошим гражданином в соответствии с их условиями.Возможно, вы захотите подтвердить, что вы следуете их Условиям обслуживания :

Если вы используете поисковую систему или робота, или вы повторно публикуете значительную часть всего контента Quora (какмы можем определить по нашему усмотрению), вы должны дополнительно следовать этим правилам:

  • Вы должны использовать описательный заголовок агента пользователя.
  • Вы должны следовать robots.txt по адресувсе время.
  • Вы должны уточнить, как с вами связаться, либо в строке вашего агента пользователя, либо на вашем веб-сайте, если таковой имеется.

Вы можете установить свой пользователь-заголовок агента легко с помощью OpenURI :

Additional header fields can be specified by an optional hash argument.

  open("http://www.ruby-lang.org/en/",
    "User-Agent" => "Ruby/#{RUBY_VERSION}",
    "From" => "foo@bar.invalid",
    "Referer" => "http://www.ruby-lang.org/") {|f|
    # ...
  }

Robots.txt можно получить из http://www.quora.com/robots.txt.Вам нужно будет проанализировать его и соблюдать его настройки, иначе вас снова забанят.

Кроме того, вы можете захотеть ограничить скорость вашего кода, засыпая между циклами.

Кроме того, если вы spidering на их сайте для контента, вы можете захотеть заглянуть в страницы кэширования локально или использовать один из пакетов spidering.Легко написать паука.Это больше работы, чтобы написать тот, который будет хорошо играть с сайтом, но лучше, чем не иметь возможности «пауковать» их сайт вообще.

...