python類比瀏覽器登入

來源:互聯網
上載者:User

轉自:http://blog.csdn.net/shomy_liu/article/details/37658701

上一篇大致介紹了python爬取網頁的兩種簡單的情況;接著又學習了一下登入的情況;並實現了登入人人網

先大致總結一下登入的幾個步驟

1,添加Cookie配置

一般需要帳號密碼登陸的,直接網址或者模仿瀏覽器操作是無法進入的,一般的解決方案是用python的一個模組是cookielib,用來記住登入成功之後儲存到本地的cookie;

具體代碼看人人登入吧

2,添加登入需要提交的表單資訊

一般postdata的資訊為登陸的使用者名稱,密碼什麼的,還有許多其他的資訊,其餘的資料是否必要,需要測試一下; 查看這個就可以用httpfox 或者審查元素的nextwork裡面,當你點擊登入的時候,在審查元素的network裡面可以看到post 、get的資料資訊;這裡就可以按照我們需要的來拿;

下面是模仿登入人人網的代碼;代碼注釋挺細的。以便以後回憶~~ 由於對正則不太會,就沒有做爬取(正則後面在學QAQ)

[python]  view plain copy # -*- coding: cp936 -*-   #renren login   #Filename: renren.py      import urllib2,urllib,cookielib      #設定cookie   cookiejar= cookielib.CookieJar()   cookie=urllib2.HTTPCookieProcessor(cookiejar)   opener= urllib2.build_opener(cookie,urllib2.HTTPHandler())   urllib2.install_opener(opener)      #帳號資訊   email=raw_input('輸入郵箱')   password=raw_input('輸入密碼')   domain='renren.com'#網域名稱   url='http://www.renren.com/PLogin.do'#可以通過審查元素得到         #httpfox抓取資料包資訊, 其中headers和domain 可有可無 postdata裡面很多元素;最主要的使用者名稱密碼   #d對付反爬蟲   headers={      'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0'       }   data={       'email' : email,       'password' : password,       'domain': domain       }   #編碼data   postdata = urllib.urlencode(data)         #發起請求   req=urllib2.Request(url,postdata,headers)   #擷取源碼   print urllib2.urlopen(req).read()                         

轉自:http://zipperary.com/2013/08/16/python-login/

我的部落格中曾經貼過幾個爬蟲程式的代碼,用來批量下載圖片非常方便。這樣的爬蟲實現起來比較簡單。而有些網站需要使用者登入之後才可以下載檔案,之前的方法就辦不到了。今天就說說用Python類比瀏覽器的登入過程,為之後的登入下載做好準備。

登入的情況,需要額外用到的一個模組是cookielib,用來記住登入成功之後儲存到本地的cookie,方便在網站的各個頁面之間穿越。

先上程式碼範例:

12345678910111213141516171819202122232425262728
#encoding=utf8import urllibimport urllib2import cookielib###登入頁的urllgurl = 'http://mlook.mobi/member/login'###用cookielib模組建立一個對象,再用urlllib2模組建立一個cookie的handlercookie = cookielib.CookieJar()cookie_handler = urllib2.HTTPCookieProcessor(cookie)###有些網站反爬蟲,這裡用headers把程式偽裝成瀏覽器hds = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36' }  ###登入需要提交的表單pstdata = {'formhash':'', #填入formhash'person[login]':'', #填入網站的使用者名稱'person[password]':'', #填入網站密碼}dt = urllib.urlencode(pstdata) #表單資料編碼成url識別的格式req = urllib2.Request(url = lgurl,data = dt,headers = hds) #偽裝成瀏覽器,訪問該頁面,並POST表單資料,這裡並沒有實際訪問,只是建立了一個有該功能的對象opener = urllib2.build_opener(cookie_handler) #綁定handler,建立一個自訂的openerresponse = opener.open(req)#請求網頁,返回控制代碼page = response.read()#讀取並返回網頁內容print page #列印到終端顯示

說明一下:

我這裡就不提供使用者名稱密碼了。關於需要提交的表單資料,chrome使用者可以F12 -> Network -> 填好帳號密碼並登入 -> 在Network找到POST...,請看截圖。

點擊「login」進入下圖介面。


「From Data」裡面資料比較多,通常需要使用者名稱、密碼,其餘的資料是否必要,需要測試一下。對於這個網站,還需要「formhash」。

Linux下無編碼問題,win下如果出現編碼問題應該是終端對編碼的支援不到位。

登入成功之後,我們建立的cookie_handler會自動管理cookie,程式的後面如果需要訪問其他頁面,用opener開啟其url即可。

「User-Agent」同樣可以通過F12查看到。

更詳細更nice的說明請參考這裡

這篇部落格重點不在介紹原理,重點是記錄下這個簡單的代碼塊,其他需要登入的爬蟲仿寫就可以了。

這個程式的目的是批量下載mlook的電子書。現在遇到一個問題:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.