我正在嘗試下載以下圖片: http: //www.bom.gov.au/radar/IDR663.T.202202252249.png 或者顯然有一個 FTP 鏈接: ftp: //ftp.bom.gov.au/匿名/gen/雷達/
我嘗試了以下方法,但似乎都不起作用:
def download_image(url):
img_data = requests.get(url).content
with open('image_name.png', 'wb') as handler:
handler.write(img_data)
def download_image_2(url):
with open('image_name.png', 'wb') as handle:
response = requests.get(url, stream=True)
if not response.ok:
print(response)
for block in response.iter_content(1024):
if not block:
break
handle.write(block)
def download_image_3(url):
response = requests.get(url)
if not response.ok:
print(response)
file = open("image_name.png", "wb")
file.write(response.content)
file.close()
def download_image_4(url):
# Downloading from an FTP stream
with closing(req.urlopen(url)) as r:
with open('image_name.png', 'wb') as f:
shutil.copyfileobj(r, f)
uj5u.com熱心網友回復:
BOM 不允許網頁抓取。你可以使用他們的FTP服務器。
http://www.bom.gov.au/catalogue/anon-ftp.shtml
請注意,雷達影像在被洗掉之前僅存盤 1.2 小時。
此代碼獲取/anon/gen/radar目錄中的所有檔案名,然后list僅使用 Brisbane/Mt Stapylton 檔案生成一個,最后僅下載并保存尚未下載并保存到磁盤的檔案。
您可以每小時運行一次以在洗掉之前獲取所有新影像。
import os
from ftplib import FTP
def get_brisbane_filenames(filename):
if filename.startswith("IDR663.T."):
brisbane_filenames.append(filename)
ftp = FTP(r"ftp.bom.gov.au")
ftp.login()
ftp.cwd("/anon/gen/radar")
brisbane_filenames = []
ftp.retrlines("NLST", get_brisbane_filenames)
for filename in brisbane_filenames:
if not os.path.isfile(filename):
with open(filename, "wb") as fp:
ftp.retrbinary(f"RETR {filename}", fp.write)
print(f"Downloaded and saved {filename}")
ftp.quit()
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/434009.html
