Python學(xué)習(xí)日記8|python模擬登錄新浪微博和QQ空間

首先詳細(xì)說(shuō)明一下什么是cookies?

當(dāng)用戶通過(guò)瀏覽器首次訪問(wèn)一個(gè)域名時(shí),訪問(wèn)的WEB服務(wù)器會(huì)給客戶端發(fā)送數(shù)據(jù)尤蒿,以保持WEB服務(wù)器與客戶端之間的狀態(tài)保持(Http協(xié)議是一個(gè)無(wú)狀態(tài)的面向連接的協(xié)議,客戶端再一次訪問(wèn)該服務(wù)器時(shí)怠堪,會(huì)繼續(xù)使用上一次建立的連接揽乱,但是,由于Http協(xié)議是無(wú)狀態(tài)的粟矿,WEB服務(wù)器并不知道這兩個(gè)請(qǐng)求是否同一個(gè)客戶端凰棉,這兩次請(qǐng)求之間是獨(dú)立的。 為了解決這個(gè)問(wèn)題嚷炉, Web程序引入了Cookie機(jī)制來(lái)維護(hù)狀態(tài)渊啰。),這些數(shù)據(jù)就是Cookie申屹,它是 Internet 站點(diǎn)創(chuàng)建的 ,為了辨別用戶身份而儲(chǔ)存在用戶本地終端上的數(shù)據(jù)绘证,Cookie中的信息一般都是經(jīng)過(guò)加密的,Cookie存在緩存中或者硬盤(pán)中哗讥,在硬盤(pán)中的是一些小文本文件,當(dāng)你訪問(wèn)該網(wǎng)站時(shí)嚷那,就會(huì)讀取對(duì)應(yīng)網(wǎng)站的Cookie信息,Cookie有效地提升了我們的上網(wǎng)體驗(yàn)杆煞。

Request.Cookies 是客戶端通過(guò) Cookie 標(biāo)頭形式由客戶端傳輸?shù)椒?wù)器的 Cookie魏宽;
Response.Cookies 在服務(wù)器上創(chuàng)建并以 Set-Cookie 標(biāo)頭的形式傳輸?shù)娇蛻舳恕R簿褪钦f(shuō)决乎,一個(gè)是客戶端向服務(wù)器端發(fā)送的來(lái)的队询,一個(gè)是服務(wù)器發(fā)送到客戶端的。

會(huì)話對(duì)象requests.Session能夠跨請(qǐng)求地保持某些參數(shù)构诚,比如cookies蚌斩,即在同一個(gè)Session實(shí)例發(fā)出的所有請(qǐng)求都保持同一個(gè)cookies,而requests模塊每次會(huì)自動(dòng)處理cookies,這樣就很方便地處理登錄時(shí)的cookies問(wèn)題范嘱。

使用requests.Session的用法一般如下:
s= requests.session()
login_data = {'user':'用戶名','passdw':'密碼'}
headers={xx}
s.post(' http://xxx' , data=login_data,headers=headers) #這里post地址為登錄頁(yè)面地址送膳;
web_data=s.get('http://www.xxx.net/archives/155/'); #這里是想要抓取頁(yè)面的地址。

今天是5.5號(hào)丑蛤。

對(duì)于模擬登錄一般有兩種方法:一叠聋、直接使用登錄成功后頁(yè)面里的cookies,然后加入到requests.get(url,cookies=cookies)中實(shí)現(xiàn)跳轉(zhuǎn)到登錄后的頁(yè)面受裹。二碌补、使用構(gòu)造表單的形式,表單里應(yīng)該提交哪些內(nèi)容棉饶,則是主要要研究的地方脑慧。一般采用F12查看network下的login頁(yè)的headers,如果看不到Form data這一欄砰盐,那么故意輸錯(cuò)密碼試一次,就能查看到坑律,接下來(lái)就是根據(jù)表單的構(gòu)成去構(gòu)造相應(yīng)內(nèi)容來(lái)實(shí)現(xiàn)登錄岩梳。

下面使用第一種方法分別用于登錄新浪微博和QQ空間囊骤。


一、利用cookies模擬登錄
有時(shí)候在chrome中若看不到相應(yīng)的cookies冀值,則可用fiddler來(lái)抓取也物。
兩者使用cookies登錄時(shí)的方式一樣,均為:

# !/usr/bin/env python
# _*_ coding: utf-8 _*_
__author__ = 'guohuaiqi'

import requests
from bs4 import BeautifulSoup

url='http://user.qzone.qq.com/2544526560'
headers={
        'Host': 'user.qzone.qq.com',  #一般headers里最好不要加host
        'Connection': 'keep-alive',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
        'Upgrade-Insecure-Requests': '1',
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36',
        'Referer': 'http://qzs.qq.com/qzone/v5/loginsucc.html?para=izone',
        'Accept-Encoding': 'gzip, deflate, sdch',
        'Accept-Language': 'zh-CN,zh;q=0.8',
        'Cookie': '_gscu_661903259=43107127kqbeya46; __Q_w_s__appDataSeed=1; hasShowWeiyun2544526560=1; luin=o0547991664; lskey=0001000012501c1ee782995df2b1023b7a002d9df119459a1e2edd061ddb927329bd8869a297c99346bf0c88; __Q_w_s_hat_seed=1; RK=lJPTixPn78; pgv_pvi=3677243392; __Q_w_s__QZN_TodoMsgCnt=1; qz_screen=1366x768; QZ_FE_WEBP_SUPPORT=1; cpu_performance_v8=16; pgv_pvid=3740166140; o_cookie=547991664; _qz_referrer=www.baidu.com; pgv_info=ssid=s4432010900; ptui_loginuin=2544526560; ptisp=edu; ptcz=4bec8c1683a35352bb0e283e126172e7dc5fe732d6c83b97582ba81f2e32e76a; pt2gguin=o2544526560; uin=o2544526560; skey=@MsHLbnMJC; p_uin=o2544526560; p_skey=mbwScLxeHFXh8-Dzhc1ZW96z03nEJinbwd1sJ5*ORvo_; pt4_token=h0621trCtnTA1u*csRokPwDkN4T6VmUlmlDWEGqswAI_; fnc=2'
        }

web_data=requests.get(url,headers=headers)
soup=BeautifulSoup(web_data.text,'lxml')
shuoshuo=soup.select('#menuContainer > div > ul > li.menu_item_311 > a')[0].get_text()
href=soup.select('#menuContainer > div > ul > li.menu_item_311 > a')[0].get('href')
print(shuoshuo,href)

其中headers部分是直接把瀏覽器里面的request headers全部復(fù)制進(jìn)來(lái)了列疗。在soup=BeautifulSoup(web_data.text,'lxml')之后若直接print(soup)滑蚯,會(huì)一直提示:'gbk' codec can't encode character '\u2764'之類的編碼錯(cuò)誤,所以直接select自己想要抓取的部分的內(nèi)容再print出來(lái)了抵栈。

另外當(dāng)href是javascript時(shí)告材,如下:

<a href="javascript:;" title="日志" tabindex="1" accesskey="r">日志</a>

這時(shí)應(yīng)該怎樣獲取跳轉(zhuǎn)連接還是不太清楚,若后面爬取相關(guān)內(nèi)容遇到相應(yīng)問(wèn)題時(shí)可仔細(xì)學(xué)習(xí)古劲。

二斥赋、第二種方法由于在weibo和qq中均涉及到加密的相關(guān)知識(shí),所以直接選擇放棄产艾。

還有最后一個(gè)點(diǎn)就是:一般爬取網(wǎng)站時(shí)首先考慮爬取手機(jī)端疤剑,再考慮爬取pc端。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末闷堡,一起剝皮案震驚了整個(gè)濱河市隘膘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌杠览,老刑警劉巖弯菊,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異倦零,居然都是意外死亡误续,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門扫茅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蹋嵌,“玉大人,你說(shuō)我怎么就攤上這事葫隙≡岳茫” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵恋脚,是天一觀的道長(zhǎng)腺办。 經(jīng)常有香客問(wèn)我,道長(zhǎng)糟描,這世上最難降的妖魔是什么怀喉? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮船响,結(jié)果婚禮上躬拢,老公的妹妹穿的比我還像新娘躲履。我一直安慰自己,他們只是感情好聊闯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布工猜。 她就那樣靜靜地躺著,像睡著了一般菱蔬。 火紅的嫁衣襯著肌膚如雪篷帅。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,370評(píng)論 1 302
  • 那天拴泌,我揣著相機(jī)與錄音魏身,去河邊找鬼。 笑死弛针,一個(gè)胖子當(dāng)著我的面吹牛叠骑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播削茁,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼宙枷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了茧跋?” 一聲冷哼從身側(cè)響起慰丛,我...
    開(kāi)封第一講書(shū)人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瘾杭,沒(méi)想到半個(gè)月后诅病,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡粥烁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年贤笆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讨阻。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡芥永,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出钝吮,到底是詐尸還是另有隱情埋涧,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布奇瘦,位于F島的核電站棘催,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏耳标。R本人自食惡果不足惜醇坝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望次坡。 院中可真熱鬧呼猪,春花似錦呀袱、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)明棍。三九已至乡革,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間摊腋,已是汗流浹背沸版。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留兴蒸,地道東北人视粮。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像橙凳,于是被迫代替她去往敵國(guó)和親蕾殴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容