有些網頁需要你登錄之后才可以訪問,你需要提供賬戶和密碼。
只要在發送http請求時,帶上含有正常登陸的cookie就可以了。
1、首先我們要先了解cookie的工作原理。
Cookie是由服務器端生成,發送給User-Agent(一般是瀏覽器),瀏覽器會將Cookie的key/value保存到某個目錄下的文本文件內,下次請求同一網站時就發送該Cookie給服務器(前提是瀏覽器設置為啟用cookie)。Cookie名稱和值可以由服務器端開發自己定義,對于JSP而言也可以直接寫入jsessionid,這樣服務器可以知道該用戶是否合法用戶以及是否需要重新登錄等。
2、之后我們要獲取到用戶正常登錄的cookie.
python提供了cookieJar的庫,只要把cookieJar的實例作為參數傳到urllib2的一個opener里面。
然后訪問一次登錄的頁面,cookie就已經保存下來了。之后通過這個實例訪問所有的頁面都帶有正常登陸的cookie了。
以人人網為例子:
~~~
#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","用戶名","密碼")
~~~
- 序言
- python 實現登錄網頁的操作方法
- Python爬蟲信息輸入及頁面的切換方法
- 利用Python如何實現數據驅動的接口自動化測試
- python 重定向獲取真實url的方法
- 解決Python網頁爬蟲之中文亂碼問題
- 利用Python yagmail三行代碼實現發送郵件
- Python實現查看系統啟動項功能示例
- Python利用splinter實現瀏覽器自動化操作方法
- 解決python3 json數據包含中文的讀寫問題
- python 識別圖片中的文字信息方法
- python實現對文件中圖片生成帶標簽的txt文件方法
- Python之批量創建文件的實例講解
- Python 使用PIL numpy 實現拼接圖片的示例
- 用python處理圖片之打開\顯示\保存圖像的方法
- 對python append 與淺拷貝的實例講解
- Python3讀取Excel數據存入MySQL的方法
- 詳解Django之admin組件的使用和源碼剖析
- admin組件使用
- admin源碼解析
- Python中pillow知識點學習
- Python裝飾器原理與用法分析
- Python實現的根據文件名查找數據文件功能示例
- Python開發的10個小貼士