Code: Alles auswählen
import requests
import json
from urllib.parse import urlsplit
from datetime import date
def build_local_filename(url, local_path):
base, ext = os.path.splitext(os.path.basename(url))
if os.path.isdir(local_path):
filename = '{0:%Y-%m-%d}{1}'.format(date.today(), ext)
local_path = os.path.join(local_path, filename)
return local_path
def build_requests_post(url, user, passwd):
data = {"login_act": user, "login_pwd": passwd}
r = requests.post(url, data=json.dumps(data))
try:
r.raise_for_status()
except requests.exceptions.HTTPError:
print("Verbindungsfehler %s\nFehlercode: %s" % (url, r.status_code))
return False
return r
def http_download(url, user, passwd, local_path):
"""
Stelle Verbindung zu HTTP-Server her, lade die Datei(en) herunter
und speicher diese im Ordner import_suppliers_lists.
"""
local_path = build_local_filename(url, local_path)
url_split = urlsplit(url)
base_url = "{0.scheme}://{0.netloc}/".format(url_split)
path_url = os.path.dirname(url_split.path)
file_url = os.path.basename(url_split.path)
path = base_url[:-1]
if build_requests_post(path, user, passwd):
for step in path_url.split('/'):
path = '{}{}/'.format(path, step)
r = build_requests_post(path, user, passwd)
try:
print('headers: %s' % step, '\n', r.headers)
print('cookies: %s' % step, '\n', r.cookies)
except AttributeError:
return False # Muss noch geändert werden!
with open(local_path, 'wb') as handle:
for block in r.iter_content(1024):
handle.write(block)
if os.path.isfile(os.path.abspath(local_path)):
return local_path
return False
url = 'https://www.XXXXXX.de/Pricelist/10069/ENWPL136M4SO0T0MT78A56O/*.csv'
user = 'user'
passwd = 'passwd'
local_path = '/path/to/target'
http_download(url, user, passwd, local_path)
Grüße Nobuddy
PS: Habe nachträglich nochmals Änderungen in der Furnktion 'http_download' vorgenommen.