gpt4 book ai didi

ruby-on-rails - 使用 `open-uri` 打开带逗号的 WIKI URL

转载 作者:数据小太阳 更新时间:2023-10-29 07:14:53 24 4
gpt4 key购买 nike

我遇到了 OpenURI::HTTPError: 403 Forbidden 错误当我尝试用逗号(或其他特殊字符,如 .)打开 URL 时。我可以在浏览器中打开相同的 url。

require 'open-uri'
url = "http://en.wikipedia.org/wiki/Thor_Industries,_Inc."
f = open(url)
# throws OpenURI::HTTPError: 403 Forbidden error

如何转义这样的 URL?

我尝试使用 CGI::escape 转义 url,但我得到了同样的错误。

f = open(CGI::escape(url))

最佳答案

通常,只需需要模块 cgi,然后使用 CGI::escape(str)

require 'cgi'
require 'open-uri'
escaped_page = CGI::escape("Thor_Industries,_Inc.")
url = "http://en.wikipedia.org/wiki/#{escaped_page}"
f = open(url)

但是,这似乎不适用于您的特定实例,并且仍然会返回 403。无论如何,我将把它留在这里以供引用。


编辑:维基百科拒绝您的请求,因为它怀疑您是机器人。似乎某些内容明确的页面被授予您,但那些与其“安全”模式不匹配的页面(例如包含点或逗号的页面)将受到其筛选。如果您实际输出内容(我使用 Net::HTTP 执行此操作),您将得到以下内容:

Scripts should use an informative User-Agent string with contact information, or they may be IP-blocked without notice.

但是,提供用户代理字符串可以解决问题:

open("http://en.wikipedia.org/wiki/Thor_Industries,_Inc.",
"User-Agent" => "Ruby/#{RUBY_VERSION}")

关于ruby-on-rails - 使用 `open-uri` 打开带逗号的 WIKI URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2359191/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com