亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python定向爬蟲,模擬新浪微博登錄!

系統(tǒng) 1960 0

當(dāng)我們?cè)噲D從新浪微博抓取數(shù)據(jù)時(shí),我們會(huì)發(fā)現(xiàn)網(wǎng)頁(yè)上提示未登錄,無(wú)法查看其他用戶的信息。模擬登錄是定向爬蟲制作中一個(gè)必須克服的問(wèn)題,只有這樣才能爬取到更多的內(nèi)容。

Python定向爬蟲,模擬新浪微博登錄!_第1張圖片

實(shí)現(xiàn)微博登錄的方法有很多,一般我們?cè)谀M登錄時(shí)首選WAP版。

因?yàn)镻C版網(wǎng)頁(yè)源碼中包括很多的js代碼,提交的內(nèi)容也更多,不適合機(jī)器模擬登錄。

我們實(shí)現(xiàn)微博登錄的大體思路是這樣的:

用抓包工具把正常登錄時(shí)要提交的字段都記錄下來(lái);

模擬提交這些字段;

判斷是否登錄成功;

原理很簡(jiǎn)單,讓我們一步一步來(lái)實(shí)現(xiàn)吧。

一.抓包利器Fiddler

在電腦和互聯(lián)網(wǎng)之間的通信是通過(guò)不同的數(shù)據(jù)包收發(fā)來(lái)實(shí)現(xiàn)的。

Fiddler可以從中間對(duì)數(shù)據(jù)進(jìn)行攔截,拷貝一份數(shù)據(jù)以后再將數(shù)據(jù)發(fā)送給目的端。(這也是為什么說(shuō)咖啡館的公共WIFI不安全的原因)

同類的還有WireShark。為何這兒不用WireShark呢?

Wireshark太過(guò)于專業(yè)了,它可以實(shí)現(xiàn)抓取各種包,抓下來(lái)的包也很亂,針對(duì)性沒Fiddler那么強(qiáng)。

下載安裝

  1.下載地址:http://www.telerik.com/fiddler

  2.安裝方法:fiddler依賴.Net環(huán)境,如果已經(jīng)有則無(wú)需配置,直接點(diǎn)擊下一步就行。

使用方法

  1.啟動(dòng)Fiddler

  2.配置Fiddler

    點(diǎn)擊左上角的“ WinConfig”,找到你使用的瀏覽器并勾選,點(diǎn)擊“Save Changes”

  3.使用Fiddler開始抓包

    打開瀏覽器訪問(wèn)WAP版新浪微博網(wǎng)站weibo.cn

    Fiddler窗口左側(cè)找到weibo.cn /pub/的數(shù)據(jù)包,并雙擊,這時(shí)我們就能夠在右側(cè)看到抓取到的信息.

    找到Cookies字段,這正是我們需要的.


Python定向爬蟲,模擬新浪微博登錄!_第2張圖片

二.Cookies與保持登錄

關(guān)于Cookies

    維基百科是這樣解釋的:

Cookie(復(fù)數(shù)形態(tài)Cookies),中文名稱為“小型文本文件”或“小甜餅”,指某些網(wǎng)站為了辨別用戶身份而儲(chǔ)存在用戶本地終端(Client Side)上的數(shù)據(jù)(通常經(jīng)過(guò)加密)。

通俗來(lái)說(shuō)就是服務(wù)器端為了確認(rèn)用戶終端的身份而設(shè)定的一種加密標(biāo)識(shí),它是存儲(chǔ)在本地終端上的。

當(dāng)然,隨著Cookies技術(shù)的發(fā)展,Cookies的作用已經(jīng)不止于用戶身份標(biāo)識(shí)。

當(dāng)?shù)顷懸粋€(gè)網(wǎng)站時(shí),網(wǎng)站往往會(huì)請(qǐng)求用戶輸入用戶名和密碼,并且用戶可以勾選“下次自動(dòng)登錄”。

如果勾選了,那么下次訪問(wèn)同一個(gè)網(wǎng)站時(shí),用戶會(huì)發(fā)現(xiàn)沒輸入用戶名和密碼就已經(jīng)登錄了。

這正是因?yàn)榍耙淮蔚顷憰r(shí)服務(wù)器發(fā)送了包含登錄憑據(jù)(用戶名+密碼的某種加密形式)的Cookie到用戶的硬盤上。

第二次登錄時(shí),如果該Cookies尚未到期,瀏覽器會(huì)發(fā)送該Cookies,服務(wù)器驗(yàn)證憑據(jù),于是不必輸入用戶名和密碼就讓用戶登錄了。

三.Cookies模擬登錄

下面將介紹使用 Fiddler 獲取新浪微博 Cookies,然后使用 Requests 提交 Cookies 從而實(shí)現(xiàn)模擬登錄。

抓取登錄數(shù)據(jù)包

    使用Fiddler抓取數(shù)據(jù)包.

獲取Cookies

    打開新浪微博WAP版頁(yè)面(weibo.cn),點(diǎn)擊登錄,然后填寫賬號(hào)密碼,勾選“記住登錄狀態(tài)”,切記要勾選此項(xiàng).

登錄成功后,從Fiddler中選擇最新的那個(gè)weibo.cn,然后復(fù)制Cookies字段的內(nèi)容,填寫到代碼內(nèi).

代碼如下:

          
            #!/usr/bin/env python
#coding=utf8
 
 
'''
在學(xué)習(xí)過(guò)程中有什么不懂得可以加我的python學(xué)習(xí)交流扣扣qun,934109170
群里有不錯(cuò)的學(xué)習(xí)教程、開發(fā)工具與電子書籍。
與你分享python企業(yè)當(dāng)下人才需求及怎么從零基礎(chǔ)學(xué)習(xí)好python,和學(xué)習(xí)什么內(nèi)容。
'''
 
import urllib2
import re
 
# get your cookie from Fiddler11
cookie = 'your-cookie'
headers = {
   'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0',
   'cookie': cookie
}
 
def visit():
   url = 'http://weibo.com'
   req = urllib2.Request(url, headers=headers)
   text = urllib2.urlopen(req).read()
 
# print the title, check if you login to weibo sucessfully
   pat_title = re.compile('
            ')
   r = pat_title.search(text)
   if r:
       print(r.group(1))
 
if __name__ == '__main__':
   visit() 

          
        

四.使用 Post 提交數(shù)據(jù)的方法實(shí)現(xiàn)模擬登錄
由于使用Cookies登錄存在很多的弊端,一般我們都使用Post提交數(shù)據(jù)的方法來(lái)實(shí)現(xiàn)模擬登錄.

通過(guò)Fiddler來(lái)抓取http數(shù)據(jù)包來(lái)分析該網(wǎng)站的登錄流程;
分析抓到的post包的數(shù)據(jù)結(jié)構(gòu)和header,要根據(jù)提交的數(shù)據(jù)結(jié)構(gòu)和heander來(lái)構(gòu)造自己的post數(shù)據(jù)和header;
構(gòu)造自己的HTTP數(shù)據(jù)包,并發(fā)送給指定url;
通過(guò)urllib2等幾個(gè)模塊提供的API來(lái)實(shí)現(xiàn)request請(qǐng)求的發(fā)送和相應(yīng)的接收;
?大部分網(wǎng)站登錄時(shí)需要攜帶cookie,所以我們還必須設(shè)置cookie處理器來(lái)保證cookie.

notice:如果遇到登錄后網(wǎng)站重定向到其他url這種情況,我們可以使用chrome的審查元素功能找出重定向后的網(wǎng)站url和該網(wǎng)站的提交數(shù)據(jù),再次使用post方法就行.

?代碼如下:

          
            import HTMLParser  
import urlparse  
import urllib  
import urllib2  
import cookielib  
import string  
import re  
 
#登錄的主頁(yè)面  
hosturl = '******' //自己填寫  
#post數(shù)據(jù)接收和處理的頁(yè)面(我們要向這個(gè)頁(yè)面發(fā)送我們構(gòu)造的Post數(shù)據(jù))  
posturl = '******' //從數(shù)據(jù)包中分析出,處理post請(qǐng)求的url  
 
#設(shè)置一個(gè)cookie處理器,它負(fù)責(zé)從服務(wù)器下載cookie到本地,并且在發(fā)送請(qǐng)求時(shí)帶上本地的cookie  
cj = cookielib.LWPCookieJar()  
cookie_support = urllib2.HTTPCookieProcessor(cj)  
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)  
urllib2.install_opener(opener)  
 
#打開登錄主頁(yè)面(他的目的是從頁(yè)面下載cookie,這樣我們?cè)谠偎蚿ost數(shù)據(jù)時(shí)就有cookie了,否則發(fā)送不成功)  
h = urllib2.urlopen(hosturl)  
 
#構(gòu)造header,一般header至少要包含一下兩項(xiàng)。這兩項(xiàng)是從抓到的包里分析得出的。  
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1',  
          'Referer' : '******'}  
#構(gòu)造Post數(shù)據(jù),他也是從抓大的包里分析得出的。  
postData = {'op' : 'dmlogin',  
           'f' : 'st',  
           'user' : '******', //你的用戶名  
           'pass' : '******', //你的密碼
           'rmbr' : 'true',   //特有數(shù)據(jù),不同網(wǎng)站可能不同  
           'tmp' : '0.7306424454308195'  //特有數(shù)據(jù),不同網(wǎng)站可能不同  
           }  
 
#需要給Post數(shù)據(jù)編碼  
postData = urllib.urlencode(postData)  
 
#通過(guò)urllib2提供的request方法來(lái)向指定Url發(fā)送我們構(gòu)造的數(shù)據(jù),并完成登錄過(guò)程  
request = urllib2.Request(posturl, postData, headers)  
print request  
response = urllib2.urlopen(request)  
text = response.read()  
print text

          
        

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 亚洲一级毛片免费在线观看 | 天天综合在线视频 | 亚洲精品欧美日韩 | 97国内精品久久久久久久影视 | 久夜色精品国产一区二区三区 | 久久综合综合久久狠狠狠97色 | 看全色黄大色黄大片 视 | 欧美日韩亚洲无线码在线观看 | 国产亚洲欧美一区二区三区 | 在线观看精品视频一区二区三区 | 精品亚洲性xxx久久久 | 四虎影视永久地址www成人 | 色综久久 | 99中文字幕 | 婷婷综合激情五月中文字幕 | 国产日韩欧美一区 | 国产精品高清在线观看地址 | 久久综合玖玖爱中文字幕 | 国产在线观看一区精品 | 国产欧美成人xxx视频 | 韩国精品一区二区久久 | 日韩精品久久久毛片一区二区 | 四虎影视在线看 | 亚洲高清在线mv | 欧美一级成人 | 日韩免费观看一级毛片看看 | 日本特级黄毛片毛片视频 | 亚洲色无码播放 | 久久99精品一区二区三区 | 久久99国产亚洲高清观看首页 | 看真人一级毛片 | 99这里精品 | 操熟美女又肥又嫩的骚屁股 | 成年女人色毛片免费 | 亚洲成人视屏 | 狠狠色丁香久久综合五月 | 久热在线视频 | 欧美日韩免费在线 | 澳门四虎影院 | 美妇乱人伦性 | 久久精品综合国产二区 |