【问题标题】:Check url is a file or directory检查 url 是文件还是目录
【发布时间】:2012-05-27 07:57:34
【问题描述】:

你好。

我有一个 URL 列表。我不知道如何检查这个地址是文件还是目录。

例子:

url = "http://example.com/path/to/file.html"

if '.' in url.split('/')[-1]:
    return True

但如果 url 是

url = "http://example.com/path/domains/domain.com"

domain.com 是目录而不是文件。如何检测?

检查文件扩展名不好,可能是一些标题?但我想尽可能少地使用互联网传输。

编辑:

我需要下载大量链接并将它们的路径映射到我的操作系统中的位置。例如 example.com/path/to/file.html

~/Downloads/example.com/path/to/

在这里下载file.html。 例如:

example.com/directory/  
create ~/Downlods/example.com/directory/ 
next url: example.com/directory/dir2  
create ~/Downloads/example.com/directory/dir2  
next url: example.com/directory/file.html  
Download file.html in too ~/Downloads/example.com/directory/
not too create file.html directory

【问题讨论】:

  • 真的,除非结尾有斜线,否则不能。
  • 所有页面都在一个站点中?检查目录页面和爬网页面中唯一的内容,现在您可以检查...但我认为最好的方法是添加扩展名
  • @TylerCrompton 即使这样也不是万无一失的事情。 URL 是服务器处理的东西,虽然有些服务器将 URL 映射到它们的文件系统,但越来越普遍的是不处理(mod_rewrite 和 pals 很容易不处理)。你可以让任何 URL 指向你想要在你的服务器上的任何东西。
  • @Lattyware,相信我,我知道。虽然并非总是如此,但重写通常是从一个文件到一个文件或从一个目录到一个目录。

标签: python url


【解决方案1】:

简而言之,你不能。默认情况下,访问 URL http://example.com/path/domains/domain.com 会发送一个 302 重定向(如果我没记错的话)到 http://example.com/path/domains/domain.com/。响应中没有标头指示 URL 是否指向目录。我可以问你为什么需要知道这个吗?我想您可以在 URL 中添加一个斜杠,然后看看会发生什么。这可能会为您提供您正在寻找的结果。

【讨论】:

  • 除非文件系统根本不支持它。在这种情况下,整个练习毫无意义。
  • 没错。我会说这两种方式都毫无意义。
  • 我需要下载大量链接并将它们的路径映射到我的操作系统中的位置
  • 查看wget。它可以递归下载,并根据 URL 在您的操作系统上创建文件结构。 curl 也可以,但我不经常使用它。
  • @TylerCrompton 我知道这篇文章已经过时了,但这个想法很完美。解决了我的问题。谢谢
【解决方案2】:

在 HTTP 服务器上,没有“文件”或“目录”这样的东西。您只需向服务器发送一个 URI,该 URI 标识取决于服务器配置的特定资源。 默认情况下,大多数 HTTP 服务器使用您系统的文件和目录,但可以配置(URL 重写,...)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 2011-05-31
    • 2013-03-15
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多