2017-09-22 65 views
0

在问这个问题之前,我一直在寻找解决方案,但不幸的是他们都没有取得好的结果。 我得到一个OpenURI::HTTPError: 405 Not Allowed访问这个特定的URL时:解析网页产量405不允许

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 

回答

3

的问题是,服务器需要一个User-Agent头工作,所以卷曲它会是这样的:

curl --header "User-Agent: Mozilla/5.0" http://streeteasy.com 
+0

谢谢你。那是我的直觉。你知道如何用nokogiri指定用户代理吗? – Cyzanfar

+0

不是真的,但它应该像添加一个正常的标题,[这个链接](https://stackoverflow.com/questions/12205221/python-mechanize-how-to-add-a-header-on-a-single - 打开电话)可以帮助你 – eLRuLL

+0

我添加了一个用户代理我的请求,它的工作除了网站阻止我,因为它认为我是一个机器人 – Cyzanfar