gpt4 book ai didi

ruby - “错误请求”在 Ruby 中下载一些文件?

转载 作者:可可西里 更新时间:2023-11-01 17:14:19 26 4
gpt4 key购买 nike

我最近有一段时间休息了,我想看看我能多快地组装一个工作程序来为我自动检索“.torrent”文件,这将是一个很好的练习。我知道有现有的解决方案,但这更像是一种编程练习。

一切顺利,它运行,检查站点是否有新的种子文件,并尝试下载它们。但这就是我遇到问题的地方;当我尝试下载 .torrent 文件时,我尝试从其中下载 .torrent 文件的网站之一是给我一个包含此文件而不是 torrent 文件的文件;

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.2.3 (CentOS) Server at forums.mvgroup.org Port 80</address>
</body></html>

我的第一个想法可能是链接失效了,所以我在浏览器中成功下载了文件,所以它不是失效链接。我接下来的想法是,也许我没有正确下载文件。This 是我使用的示例,this 是在我的程序中进行下载的实际代码。

我暗暗怀疑这会成为那些脑残的简单陷阱之一,但我花了很长时间才弄明白。有谁知道我为什么会得到 400,或者如何解决这个问题?

最佳答案

损坏的链接应返回 404 Not Found 错误。因为您可以使用浏览器检索文件,所以我发现还有两个其他可能的问题:要么您缺少浏览器自动处理的代码中的重定向处理,要么缺少所需的 session ID 或 cookie 或某些状态值。同样,浏览器会处理这些,但您的代码不会,除非您将其写入或利用正确的 gem。

您链接到的示例代码位于 http://snippets.dzone.com/posts/show/2469是简陋的,但没有连接到重定向,这是我怀疑你需要的。我看了一眼你的代码,它也不处理它​​们。 docs for Net::HTTP 中的“跟随重定向”示例代码展示了如何做到这一点。

与其自己编写代码来检索 URL,无异于重新发明轮子,我建议使用 Ruby 的 Open::URI。 ,因为它会自动处理重定向以及超时重试。它易于使用,是那些正常的“获取 URL”工作的好 helper 。

如果您想要一个处理重定向和 cookie 以及 session ID 的 gem,请查看 Mechanize .尽管它实际上是为导航网站而设计的,但对于一般用途的任务来说,这是一个非常好的 gem。

对于更强大的任务,CurbTyphoeus很好,因为它们可以处理多个请求,尽管您需要编写更多代码来管理文件和导航站点。对于文件下载,它们会很好。

关于ruby - “错误请求”在 Ruby 中下载一些文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6725289/

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