我正在使用 os.system('wget '+ link)
从网站检索文件。下载后,我想根据源链接进一步处理这些文件。
大部分链接都是这种形式
http://example.com/.../filename.zip
.
在这种情况下,文件只是作为 filename.zip
下载。我可以使用 basename
和 RegExp [^/]+$
从链接中提取。
但问题是
http://http://www.ez-robot.com
http://www.worldscientific.com/
http://www.fairweld.com
这些链接被下载为 index.html
、index.html.1
、index.html.2
等。
在这里,我无法区分哪个 index
文件属于哪个网站。我可以做到这一点的一种方法是查看链接传递给 wget
的顺序。
我想要一些通用方法来获取计算机中下载文件的“真实”文件名。当 wget
完成执行时,它会在终端上显示一个 Saving to:
标签,后跟“真实”文件名。我想将该文件名存储在一个字符串中。
是否存在任何直接/更简单的方法来获取文件名?我正在使用 Python。
$ wget http://www.fairweld.com
--2015-04-11 18:51:48-- http://www.fairweld.com/
Connecting to 202.142.81.24:3124... connected.
Proxy request sent, awaiting response... 200 OK
Length: 39979 (39K) [text/html]
Saving to: ‘index.html.4
最佳答案
您遇到的问题是因为文件名已经存在。我建议将每个"file"下载到一个新文件夹(即域名)以防止重复。
$ wget --directory-prefix=$DOMAIN $URL
这将保留原始文件名,如数据标题中指定的那样。
还有一个提示,您正在使用 os.system('wget '+ link)
这可能非常不安全,因为您没有在此处清理您的输入。输入可能会受到注入(inject),这会使您的系统运行不需要的命令。在 Bobby Tables 上阅读更多内容.
关于python - 如何获取wget下载的文件的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29578439/