红宝石Nokogiri请求403 Forbidden

时间:2014-07-15 10:36:17

标签: ruby nokogiri http-status-code-403

您好我使用宝石Nokogiri从ruby-toolbox中抓取宝石色调

Nokogiri::HTML(open("https://www.ruby-toolbox.com/categories/by_name"))

但我收到错误:" 403 Forbidden"

有人能告诉我为什么会收到此错误吗?

提前致谢

4 个答案:

答案 0 :(得分:7)

尝试更改您的用户代理:

Nokogiri::HTML(open("https://www.ruby-toolbox.com/categories/by_name", 'User-Agent' => 'firefox'))

www.ruby-toolbox.com似乎不接受'ruby'作为代理人。

答案 1 :(得分:0)

这似乎是OpenURI issue。试试这个:

Nokogiri::HTML(open("https://www.ruby-toolbox.com/categories/by_name", 'User-Agent' => 'ruby'))

答案 2 :(得分:0)

如上所述,必须更改用户代理。但是,除此之外,您还必须禁用SSL证书验证,因为它也会引发错误。

require 'nokogiri'
require 'open-uri'
require 'openssl'

url = 'https://www.ruby-toolbox.com/categories/by_name'
content = open(url, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE, 'User-Agent' => 'opera')
doc = Nokogiri::HTML(content)
doc.xpath('//div[@id="teaser"]//h2/text()').to_s
# "All Categories by name"

答案 3 :(得分:0)

我花了大约1个小时的时间来尝试解决@IBAction func calculatePressed(_ sender: Any) { let height = heightSlider.value let weight = weightSlider.value calculations.calculateBMI(height: height, weight: weight) self.performSegue(withIdentifier: "GettingResults", sender: self) } 的问题,包括修改403 forbidden的{​​{1}}参数,调查代理等。

但是在整个过程中,我的代码都没有错,我被自动浏览的网站巧妙地更改了URL ,并且以前访问的URL被禁止了。

我希望这可以节省其他人的时间。