前面簡單提到了 Python 模擬登錄的程序,但是沒寫清楚,這里再補上一個帶注釋的 Python 模擬登錄的示例程序。簡單說一下流程:先用cookielib獲取cookie,再用獲取到的cookie,進入需要登錄的網站。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# -*- coding: utf-8 -*- # !/usr/bin/python import urllib2 import urllib import cookielib import re auth_url = 'http://www.nowamagic.net/' home_url = 'http://www.nowamagic.net/' ; # 登陸用戶名和密碼 data = { "username" : "nowamagic" , "password" : "pass" } # urllib進行編碼 post_data = urllib.urlencode(data) # 發送頭信息 headers = { "Host" : "www.nowamagic.net" , "Referer" : "http://www.nowamagic.net" } # 初始化一個CookieJar來處理Cookie cookieJar = cookielib.CookieJar() # 實例化一個全局opener opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar)) # 獲取cookie req = urllib2.Request(auth_url,post_data,headers) result = opener. open (req) # 訪問主頁 自動帶著cookie信息 result = opener. open (home_url) # 顯示結果 print result.read() |
再附帶幾個示例程序:
1. 使用已有的cookie訪問網站
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import cookielib, urllib2 ckjar = cookielib.MozillaCookieJar(os.path.join( 'C:\Documents and Settings\tom\Application Data\Mozilla\Firefox\Profiles\h5m61j1i.default' , 'cookies.txt' )) req = urllib2.Request(url, postdata, header) req.add_header( 'User-Agent' , \ 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)' ) opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(ckjar) ) f = opener. open (req) htm = f.read() f.close() |
2. 訪問網站獲得cookie,并把獲得的cookie保存在cookie文件中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import cookielib, urllib2 req = urllib2.Request(url, postdata, header) req.add_header( 'User-Agent' , \ 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)' ) ckjar = cookielib.MozillaCookieJar(filename) ckproc = urllib2.HTTPCookieProcessor(ckjar) opener = urllib2.build_opener(ckproc) f = opener. open (req) htm = f.read() f.close() ckjar.save(ignore_discard = True , ignore_expires = True ) |
3. 使用指定的參數生成cookie,并用這個cookie訪問網站
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import cookielib, urllib2 cookiejar = cookielib.CookieJar() urlOpener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar)) values = { 'redirect' :", 'email' : 'abc@abc.com' , 'password' : 'password' , 'rememberme' :", 'submit' : 'OK, Let Me In!' } data = urllib.urlencode(values) request = urllib2.Request(url, data) url = urlOpener. open (request) print url.info() page = url.read() request = urllib2.Request(url) url = urlOpener. open (request) page = url.read() print page |