繁体   English   中英

wget 没有在 python 中下载任何东西

[英]wget not downloading anything in python

在我的 linux 终端上,我只需运行此命令即可从网站下载所有 pdf

wget -A pdf -m -p -E -k -K -np http://site/path/

但是我要在 Windows 上使用 Python 自动化该过程,我正在尝试这个脚本。 尽管循环运行并打印 (i),但 wget 命令似乎没有运行,因为它没有下载任何东西。 该单元仅运行 2 秒钟。 如果 wget 真的在运行并下载所有内容,它会花费更多的时间。

import os
lst = ['www.falk-ross.eu']

for i in lst:
    print(i)
    os.system('wget -A pdf -m -p -E -k -K -np %s' % i)

为什么 wget 似乎不起作用?

要直接回答您的问题,我在这里看到两种方法:

  • 直接在 Linux 终端中运行 Python 脚本,您知道wget已正确设置并且可以正常工作
  • 为 Windows 安装 wget,例如从http://gnuwin32.sourceforge.net/packages/wget.htm ,并将wget.exe文件所在的文件夹添加到您的PATH ,或在os.system调用

如果我知道你在使用什么 Linux 终端(WSL?Cygwin?Linux 虚拟机?所有这些都会有不同的行为),我的回答会更准确。 但是,一般规则是您的 Linux shell 可能不会完全按照您的 Windows 环境进行配置:它们具有不同的 env 变量,并且通常它们甚至不共享相同的可执行文件。

所有这些只是为了让您了解它无法正常工作的可能原因。

但是,我建议您使用更 Pythonic 的方式,例如使用 Python 从网站下载所有 pdf 文件中描述的方式

从代码中调用另一个可执行文件通常是一个坏习惯,主要是因为:

  • 您永远无法确定目标系统上的配置会允许它,或者会很好地处理它(目标可执行文件不能存在,或存在于其他路径中,它的执行可以被禁止,...)
  • 它使检测错误和在流程中创建可预测的行为变得更加困难

即使在os模块的文档中,也推荐使用subprocess模块。

我在生成必要的 shell 并获得结果时遇到了一些问题。 子流程模块解决了我的问题。

此外,您可以直接使用requests模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM