2012-09-12 181 views
4

我試圖使用請求下載一些文檔,但該頁面將我重定向到屏幕上的用戶日誌,因此下載了HTML頁面。身份驗證和python請求

我試着這樣做:

c=requests.get(url,auth=HTTPBasicAuth('user','pass')) 

但我沒有得到驗證。

我也試過香草和文摘。

窗體本身看起來是這樣的:

<input id="username" name="username" class="required" tabindex="1" type="text" value="" size="25" autocomplete="false"/> 
<br/> 

<label for="password">Password</label> 
<input id="password" name="password" class="required" tabindex="2" type="password" value="" size="25" autocomplete="off"/> 

我需要在作爲有效載荷的一部分的用戶名和密碼來傳遞?如果是這樣,我該怎麼做?到目前爲止,我嘗試了幾種不同的方法。

+0

是基本身份驗證,你得到一個瀏覽器彈出一個要求輸入用戶名和密碼,或者是用文本框,要求用戶名和密碼,定期頁? –

+0

@ samy.vilar我相信基本身份驗證。我嘗試下載一個文檔,然後用一個簡單的表單重定向到另一個頁面(部分顯示在上面) –

回答

5

基本上,它必須處理從頁面中獲取身份驗證ID並傳遞cookie。

這基本上就是我所做的:

from bs4 import BeautifulSoup as bs 
import requests 
s = requests.session() 
url = r'url_i_care_about' 

def authenticate(s, url): 
    headers = {'username': 'myuser', 'password': 'mypasss', '_Id': 'submit'} 
    page=s.get(url) 
    soup=bs(page.content) 
    value=soup.form.find_all('input')[2]['value'] 
    headers.update({'value_name':value}) 
    auth = s.post(url, params=headers, cookies=page.cookies)