wget --content-disposition с использованием python - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь загрузить что-то с веб-сайта, используя python. У меня есть код в Windows cmd из командного файла, который работает с использованием

wget --content-disposition "url"

Я хочу быть в состоянии сделать это в скрипте Python. Как я могу это сделать? Пока у меня есть

for name,ID in stations[stationid==26887]:
count=0
for y in year:
    for m in month:
        url = "http://climate.weather.gc.ca/climate_data/bulk_data_e.html?format=csv&stationID="+str(ID)+"&Year="+str(y)+"&Month="+str(m)+"&Day=14&timeframe=1&submit= Download+Data"
        print(url)
        urllib.request.urlretrieve(url, str(count)+".csv")
        count=count+1

Я получаю ошибку HTTPError: HTTP Error 400: Bad Request. Я предполагаю, что это связано с отсутствием аргумента --content-disposition. Есть ли такой аргумент в модуле wget python, который соответствует тому, что делается в cmd? Если я просто скопирую и вставлю URL в веб-браузер, он сразу же начнет скачивать файл .csv с его собственным уникальным именем. Не уверен, почему это не работает через Python. Вот что я получаю, когда печатаю свой URL: http://climate.weather.gc.ca/climate_data/bulk_data_e.html?format=csv&stationID=26887&Year=2018&Month=8&Day=14&timeframe=1&submit= Загрузить + Данные

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Python Wget вовсе не Wget

из своих документов они заявляют

wget.py не совместим с утилитой Unix wget, сделать интерфейс командной строки интуитивно понятным для новых людей.

@ nanomosfet имеет хороший ответ

Если вы используете wget, вы можете использовать модуль подпроцесса для вызова реального wget

0 голосов
/ 09 мая 2018

Попробуйте использовать urllib.request.

import urllib.request
url = '<your url>'
urllib.request.urlretrieve(url, 'file.ext')

Теперь ваш файл должен находиться в текущем рабочем каталоге вашего питона.

Вы можете найти свой текущий рабочий каталог следующим образом:

import os
os.getcwd()
# 'C:\\Python' would similar to the output if you are on windows

Если вы хотите просто иметь функцию download, которая по умолчанию задает имя файла для имени загруженного файла, вы можете определить эту функцию следующим образом.

def download(url, filename=url.split('/')[-1]):
    return urllib.request.urlretrieve(url, filename)
# This should download a file into your current working directory
download(url)
...