I have this code below that downloads files on each loop. What i would like to do is on each loop it should extract the files to its corresponding folder. Whats currently happening is its saving all the files in each folder and overwriting files with the same names.
Any help would be appreciated.
import os
import requests
import zipfile, StringIO
from bs4 import BeautifulSoup
# Here were add the login details to be submitted to the login form.
payloads = [
{'USERNAME': '1111','PASSWORD': '1111','option': 'login'},
{'USERNAME': '2222','PASSWORD': '2222','option': 'login'},
{'USERNAME': '3333','PASSWORD': '3333','option': 'login'},
{'USERNAME': '4444','PASSWORD': '4444','option': 'login'},
]
folders = [r"C:\temp\1111", r"C:\temp\2222", r"C:\temp\3333", r"C:\temp\4444"]
#Possibly need headers later.
headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'}
base_url = "https://service.rl360.com/scripts/customer.cgi/SC/servicing/"
# Use 'with' to ensure the session context is closed after use.
for payload in payloads:
with requests.Session() as s:
p = s.post('https://service.rl360.com/scripts/customer.cgi?option=login', data=payload)
# Get the download page to scrape.
r = s.get('https://service.rl360.com/scripts/customer.cgi/SC/servicing/downloads.php?Folder=DataDownloads&SortField=ReportDate&SortOrder=Ascending', stream=True)
content = r.text
soup = BeautifulSoup(content, 'lxml')
#Now i get the most recent download URL.
download_url = soup.find_all("a", {'class':'tabletd'})[-1]['href']
#now we join the base url with the download url.
download_docs = s.get(base_url + download_url, stream=True)
print "Checking Content"
content_type = download_docs.headers['content-type']
print content_type
print "Checking Filename"
content_name = download_docs.headers['content-disposition']
print content_name
print "Checking Download Size"
content_size = download_docs.headers['content-length']
print content_size
#This is where we extract and download the specified xml files.
z = zipfile.ZipFile(StringIO.StringIO(download_docs.content))
print "---------------------------------"
print "Downloading........."
for folder in folders:
z.extractall(folder)
#Now we save the files to the specified location.
print "Download Complete"