为什么我可以用python打开youtube html页面,但我可以';红宝石的t?
我用html打开youtube搜索页面 我使用python 3:为什么我可以用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已
从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的看法可能也是正确的。