Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我可以用python打开youtube html页面,但我可以';红宝石的t?_Python_Ruby - Fatal编程技术网

为什么我可以用python打开youtube html页面,但我可以';红宝石的t?

为什么我可以用python打开youtube html页面,但我可以';红宝石的t?,python,ruby,Python,Ruby,我用html打开youtube搜索页面 我使用python 3: 从urllib.request导入urlopen urlopen('http://youtube.com/results?search_query=test)。读() 和ruby 2: 需要“net/http” Net::HTTP.get('www.youtube.com','/results?search\u query=test') 第二种方法一开始可以使用我的电脑,但第二种方法不行。请求返回空字符串,我还看到消息“301已

我用html打开youtube搜索页面

我使用python 3:

从urllib.request导入urlopen
urlopen('http://youtube.com/results?search_query=test)。读()

和ruby 2:

需要“net/http”
Net::HTTP.get('www.youtube.com','/results?search\u query=test')

第二种方法一开始可以使用我的电脑,但第二种方法不行。请求返回空字符串,我还看到消息“301已移动…”

如何在ruby中打开youtube html?这些错误在哪里

更新:


是的,
请求“打开uri”
有帮助。谢谢。

Youtube已永久移动到安全的
https
域。我假设您正在使用的python库(urllib)自动检测重定向,而ruby库则没有。我认为最好在URL字符串中包含
https
,因此:

require 'net/http'  
Net::HTTP.get('https://www.youtube.com','/results?search_query=test')
应该有用

如果没有(这将取决于我不知道的'net/http'库),请检查此方法。这是一种完全不同的方法,但它对我有效

html = `curl https://youtube.com/results?search_query=test`
backticks直接在操作系统终端上运行命令。因此,
cUrl
的直接输出(即从网页返回的html)将保存到变量
html

请注意,它将只在Unix机器上工作

,因为Python会运行!不严重,如果状态代码返回为
301
,则意味着永久移动——可能从http移动到https,您需要遵循重定向才能读取。我猜python中的urllib会自动遵循301重定向,而ruby请求不会自动遵循它。我对ruby了解不多,所以这只是一个猜测@安泽尔对https的看法可能也是正确的。