所以我在我的本地机器上完全运行nokogiri网页。
然而,当我尝试在我的生产环境中运行web scrape时,会出现403错误代码。
我认为这是由于网站阻止了我的服务器的ip(可能是因为之前使用该ip的人阻止了它)
是否可以通过代理服务器从我的Web服务器路由nokogiri请求?如果是这样我怎么去呢?
这是我目前的代码。
doc = Nokogiri::HTML(open(URL HERE, 'User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.854.0 Safari/535.2'))
答案 0 :(得分:0)
实际上,您只需使用OpenURI open
方法的:proxy
参数即可。
open(*rest, &block)
#open provides `open' for URI::HTTP and URI::FTP.
...
The hash may include other options, where keys are symbols:
:proxy
Synopsis:
:proxy => "http://proxy.foo.com:8000/"
:proxy => URI.parse("http://proxy.foo.com:8000/")
If :proxy option is specified, the value should be String, URI, boolean or nil.
此外,作为一般考虑因素(现在很乏味),您应该搜索有关报废内容的替代方案,特别是如果定期进行的话。像支持API或替代来源的东西。如果当前的服务器IP被阻止,代理也会发生同样的情况。