2015-08-17 63 views
0

網站我試圖抓取有一個登錄頁面,如:蟒蛇網絡爬蟲與權證認證

<form method="post" action="/login" enctype="multipart/form-data"> 
<table><tbody><tr><td>Name</td> 
        <td><input type="text" name="user"></td>     
       </tr> 
       <tr><td>Password</td> 
        <td><input type="password" name="password"></td> 
       </tr> 
     </tbody> 
</table> 
<input type="hidden" name="request_uri" value="/index.html"> 
<input type="submit" name="Log In" value="Log In"> 
<p></p></form> 

訪問票據將由登錄數據後,服務器(賬號和密碼)來生成已已成功驗證,其中包含將允許訪問網站受限區域的信息。

此票證以及其他數據將被封裝到cookie中併發送到瀏覽器。此Cookie不包含任何生命期或過期信息,因此會話結束時將被丟棄。

如何通過python登錄用戶?

回答

0

使用requests模塊和POST登錄,然後保存cookie。我建議使用Fiddler2來捕獲到網站的流量,然後構建您的響應,以便Python代碼中的有效內容與服務器期望的有效內容相匹配。你的代碼看起來像這樣:

import requests 

url = 'http://mywebsite.com' 
payload = {'user': 'my_usersname', 'password': 'my_password'} 
r = requests.post(url, params=payload) 
print r.text # for Python 3.x use print(r.text) 
print r.cookies 
+0

是的,我試過了代碼。我也試過cookielib,會話。但是當我抓取網站的另一個頁面時,我仍然發現自己不能登錄,因爲網站會檢查我的狀態。如果你沒有登錄,你會被重定向到登錄頁面 – milowang

+0

@milowang它是如何檢查你的狀態?您是否使用過'FIddler2'來查看發送到服務器的數據?您應該能夠使用'requests'來準確地模擬服務器在數據來自瀏覽器時看到的內容。 –