2011-12-25 3 views
1

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

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 
+0

Ну, если вы уверены, что вам запрещено, то нет. Однако, если вы не зарегистрированы, вы можете «подделать» заголовки, которые ваш искатель посылает и обманывает сайт, думая, что это браузер. Я ничего не могу придумать. – omninonsense

ответ

5

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

При работе поисковой системы или робота, или вы переиздавать значительную часть всех 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" => "[email protected]", 
    "Referer" => "http://www.ruby-lang.org/") {|f| 
    # ... 
    } 

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

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

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