2017-08-14 78 views
1

有一個網站,我連接到,但需要用不同的用戶名和密碼登錄4次。循環負載Python

是否有無論如何,我可以通過在有效載荷中循環訪問用戶名和密碼來做到這一點。

這是我第一次這樣做,我真的不知道如何去做。 如果我只發佈一個用戶名和密碼,代碼工作正常。

我使用Python 2.7和BeautifulSoup和請求。

這是我的代碼。

import requests 
import zipfile, StringIO 
from bs4 import BeautifulSoup 

# Here were add the login details to be submitted to the login form. 
payload = [ 
{'USERNAME': 'xxxxxx','PASSWORD': 'xxxxxx','option': 'login'}, 
{'USERNAME': 'xxxxxx','PASSWORD': 'xxxxxxx','option': 'login'}, 
{'USERNAME': 'xxxxx','PASSWORD': 'xxxxx','option': 'login'}, 
{'USERNAME': 'xxxxxx','PASSWORD': 'xxxxxx','option': 'login'}, 
] 
#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/" 

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=ExpiryDays&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........." 
     #Now we save the files to the specified location. 
     z.extractall('C:\Temp') 
     print "Download Complete" 

回答

0

只需使用for循環。如果文件被覆蓋,您可能需要調整您的下載目錄。

payloads = [ 
{'USERNAME': 'xxxxxx1','PASSWORD': 'xxxxxx','option': 'login'}, 
{'USERNAME': 'xxxxxx2','PASSWORD': 'xxxxxxx','option': 'login'}, 
{'USERNAME': 'xxxxx3','PASSWORD': 'xxxxx','option': 'login'}, 
{'USERNAME': 'xxxxxx4','PASSWORD': 'xxxxxx','option': 'login'}, 
] 

.... 

for payload in payloads: 
    with requests.Session() as s: 
     p = s.post('https://service.rl360.com/scripts/customer.cgi?option=login', data=payload) 
     ... 
+0

那是一個非常完美 –

+0

隨意使用按鈕來答案的左邊,接受我的答案,如果他們回答您的問題:) –

+0

大聲笑,我有小於15個代表點,因此不能改變它 –