python訪問需要登錄的網頁


有些網頁需要你登錄之后才可以訪問,你需要提供賬戶和密碼。

只要在發送http請求時,帶上含有正常登陸的cookie就可以了。

1.首先我們要先了解cookie的工作原理。

Cookie是由服務器端生成,發送給User-Agent(一般是瀏覽器),瀏覽器會將Cookie的key/value保存到某個目錄下的文本文件內,下次請求同一網站時就發送該Cookie給服務器(前提是瀏覽器設置為啟用cookie)。Cookie名稱和值可以由服務器端開發自己定義,對於JSP而言也可以直接寫入jsessionid,這樣服務器可以知道該用戶是否合法用戶以及是否需要重新登錄等。

2.之后我們要獲取到用戶正常登錄的cookie.

python提供了cookieJar的庫,只要把cookieJar的實例作為參數傳到urllib2的一個opener里面。

然后訪問一次登錄的頁面,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

#encoding=utf-8

import urllib2

import urllib

import cookielib

def renrenBrower(url,user,password):

    #登陸頁面,可以通過抓包工具分析獲得,如fiddler,wireshark

    login_page = "http://www.renren.com/PLogin.do"

    try:

        #獲得一個cookieJar實例

        cj = cookielib.CookieJar()

        #cookieJar作為參數,獲得一個opener的實例

        opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

        #偽裝成一個正常的瀏覽器,避免有些web服務器拒絕訪問。

        opener.addheaders = [('User-agent','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)')]

        #生成Post數據,含有登陸用戶名密碼。

        data = urllib.urlencode({"email":user,"password":password})

        #以post的方法訪問登陸頁面,訪問之后cookieJar會自定保存cookie

        opener.open(login_page,data)

        #以帶cookie的方式訪問頁面

        op=opener.open(url)

        #讀取頁面源碼

        data= op.read()

        return data

    except Exception,e:

        print str(e)

#訪問某用戶的個人主頁,其實這已經實現了人人網的簽到功能。

print renrenBrower("http://www.renren.com/home","用戶名","密碼")

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM