簡體   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