парсинг с веб-страницы дает 405 Not Allowed

Я искал решения, прежде чем задавать эти вопросы, но, к сожалению, ни одно из них не дало хороших результатов. Я получаю OpenURI::HTTPError: 405 Not Allowed при доступе к этому конкретному URL-адресу:

require 'open-uri'
doc = Nokogiri::HTML(open("http://streeteasy.com"))

#=> OpenURI::HTTPError: 405 Not Allowed
  from /Users/cyrusghazanfar/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/open-uri.rb:358:in `open_http'

также пробовал:

$ curl -I http://streeteasy.com

который вернулся:

HTTP/1.1 405 Not Allowed
Date: Fri, 22 Sep 2017 20:03:59 GMT
Content-Type: text/html
Connection: keep-alive
Server: nginx
X-DZ: 24.193.31.96
Vary: Accept-Encoding
X-DZ: 127.0.0.1
Expires: Thu, 01 Jan 1970 00:00:01 GMT
Cache-Control: private, no-cache, no-store, must-revalidate
Edge-Control: no-store, bypass-cache
Surrogate-Control: no-store, bypass-cache

person Cyzanfar    schedule 22.09.2017    source источник


Ответы (1)


проблема в том, что для работы серверу нужен заголовок User-Agent, поэтому в curl это будет выглядеть так:

curl --header "User-Agent: Mozilla/5.0" http://streeteasy.com
person eLRuLL    schedule 22.09.2017
comment
Спасибо за это. Это была моя догадка. Вы знаете, как указать пользовательский агент с помощью nokogiri? - person Cyzanfar; 23.09.2017
comment
на самом деле это не так, но это должно быть похоже на добавление обычного заголовка, open-call">эта ссылка может вам помочь - person eLRuLL; 23.09.2017
comment
Я добавил пользовательский агент в свой запрос, и он сработал, за исключением того, что веб-сайт блокирует меня, так как думает, что я робот. - person Cyzanfar; 23.09.2017