1. 程式人生 > >python爬蟲2-簡單模擬使用者登入

python爬蟲2-簡單模擬使用者登入

這裡的簡單模擬使用者登入指的是不考慮驗證碼等除表單之外的資訊

用python實現登入與java類似,步驟如下

1:通過工具找到登入頁面的真實url

2:分析需要提交的資料(這裡不考慮除表單之外的資訊)

3:構建post請求資訊

4:設定cookie

5:提交請求

這裡模擬的是chinaunix的登入

首先實際登陸一次,用fidder得到post表單提交時候的真實url如下

http://bbs.chinaunix.net/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=LB6kU
通過分析表格,需要提交的psot表單只有

username和password兩項

url = "http://bbs.chinaunix.net/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=LB6kU"
postdata = urllib.parse.urlencode({
    "username":"15637142735",
"password":"f43312626"
}).encode("UTF-8")
這裡需要先用urlencode處理成a=b這種鍵值對的形式,同時可以對中文進行處理
req = urllib.request.Request(url,postdata)
req
.add_header("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36") cjar = http.cookiejar.CookieJar() opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cjar)) urllib.request.install_opener(opener)
構建cookie處理器
data = urllib.request.urlopen(req).read()
text = data.decode("gbk"
,"ignore") file = open("f:\\login.html","w") file.write(text) url2 = "http://bbs.chinaunix.net/" req2 = urllib.request.Request(url2,postdata) req2.add_header("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36") data = urllib.request.urlopen(req2).read() file = open("f:\\log2.html","wb") file.write(data) file.close()
開啟網頁

如果不使用cookie,訪問log2.html的時候會顯示未登入狀態

關於cookie的理解請參考我的web學習筆記中關於cookie的描述