我正在嘗試從同一臺服務器下載超過 30 萬個 HTML 檔案。我在串列/文本檔案中有 URL。我的第一次嘗試是使用 python urllib/requests 但它非常慢,并且會在幾個鏈接后卡住(10-20)。代碼示例:
for i, url in enumerate(url_list):
urllib.request.urlretrieve(url, "./pages/" str(i))
然后我嘗試簡單地使用 wget 像這樣:
wget -i links_file.txt -U netscape
wget 作業得很好,它可以毫無問題地下載 1-5 k 個檔案,而且看起來非常快,但隨后會卡在隨機 (?) 檔案中:
Connecting to <website>... connected. HTTP request sent, awaiting response...
現在我可以看到它在哪個 URL 卡住了,然后停止運行并從同一點重新啟動它,它再次運行 1-5k 下載。由于我無法在每次卡住時手動執行此操作,直到我最終擁有所有 300k 檔案,我想知道是否有辦法在 wget 等待回應時間過長然后再次嘗試時自動停止它?或者有沒有其他/更好的方法來自動下載這么多 HTML 檔案?
uj5u.com熱心網友回復:
如果 wget 等待回應時間過長然后再試一次,我如何自動停止它?
您要查找的內容稱為timeout和 number of retries。在wget您可以使用--timeout一次或使用特定的超時也就是將所有超時
--dns-timeout
--connect-timeout
--read-timeout
在任何一種情況下,您都應該提供值作為之后的秒數=,例如--timeout=60
使用--tries到重的集數(默認值:20),例如--tries=10但請記住,在致命錯誤的情況下,不重試做。
您可能還會發現有用的--no-clobber效果是如果已經存在這樣的命名檔案(將被覆寫),則不會下載該檔案
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/365342.html
下一篇:當sql_error_code=28000(主機沒有pg_hba.conf條目)時,如何正確設定HerokuNode.js與Heroku-Postgres的連接
