爬蟲系列(二十七):三種模擬登陸方式

注意:模擬登陸時病涨,必須保證settings.py里的 COOKIES_ENABLED (Cookies中間件) 處于開啟狀態(tài)

COOKIES_ENABLED = True 或 # COOKIES_ENABLED = False

策略一:直接POST數(shù)據(jù)(比如需要登陸的賬戶信息)

只要是需要提供post數(shù)據(jù)的柬赐,就可以用這種方法行您。下面示例里post的數(shù)據(jù)是賬戶密碼:

    # -*- coding: utf-8 -*-
    import scrapy


    class Renren1Spider(scrapy.Spider):
        name = "renren1"
        allowed_domains = ["renren.com"]

        def start_requests(self):
            url = 'http://www.renren.com/PLogin.do'
            # FormRequest 是Scrapy發(fā)送POST請求的方法
            yield scrapy.FormRequest(
                    url = url,
                    formdata = {"email" : "mr_mao_hacker@163.com", "password" : "axxxxxxxe"},
                    callback = self.parse_page)

        def parse_page(self, response):
            with open("mao2.html", "w") as filename:
                filename.write(response.body)

策略二:標(biāo)準(zhǔn)的模擬登陸步驟

正統(tǒng)模擬登錄方法:

首先發(fā)送登錄頁面的get請求碳蛋,獲取到頁面里的登錄必須的參數(shù)(比如說zhihu登陸界面的 _xsrf)

然后和賬戶密碼一起post到服務(wù)器痛阻,登錄成功

    # -*- coding: utf-8 -*-
    import scrapy



    class Renren2Spider(scrapy.Spider):
        name = "renren2"
        allowed_domains = ["renren.com"]
        start_urls = (
            "http://www.renren.com/PLogin.do",
        )

        # 處理start_urls里的登錄url的響應(yīng)內(nèi)容靖秩,提取登陸需要的參數(shù)(如果需要的話)
        def parse(self, response):
            # 提取登陸需要的參數(shù)
            #_xsrf = response.xpath("http://_xsrf").extract()[0]

            # 發(fā)送請求參數(shù)边翼,并調(diào)用指定回調(diào)函數(shù)處理
            yield scrapy.FormRequest.from_response(
                    response,
                    formdata = {"email" : "mr_mao_hacker@163.com", "password" : "axxxxxxxe"},#, "_xsrf" = _xsrf},
                    callback = self.parse_page
                )

        # 獲取登錄成功狀態(tài)猪贪,訪問需要登錄后才能訪問的頁面
        def parse_page(self, response):
            url = "http://www.renren.com/422167102/profile"
            yield scrapy.Request(url, callback = self.parse_newpage)

        # 處理響應(yīng)內(nèi)容
        def parse_newpage(self, response):
            with open("xiao.html", "w") as filename:
                filename.write(response.body)

策略三:直接使用保存登陸狀態(tài)的Cookie模擬登陸

如果實(shí)在沒辦法了,可以用這種方法模擬登錄讯私,雖然麻煩一點(diǎn)热押,但是成功率100%

    # -*- coding: utf-8 -*-
    import scrapy

    class RenrenSpider(scrapy.Spider):
        name = "renren"
        allowed_domains = ["renren.com"]
        start_urls = (
            'http://www.renren.com/111111',
            'http://www.renren.com/222222',
            'http://www.renren.com/333333',
        )

        cookies = {
        "anonymid" : "ixrna3fysufnwv",
        "_r01_" : "1",
        "ap" : "327550029",
        "JSESSIONID" : "abciwg61A_RvtaRS3GjOv",
        "depovince" : "GW",
        "springskin" : "set",
        "jebe_key" : "f6fb270b-d06d-42e6-8b53-e67c3156aa7e%7Cc13c37f53bca9e1e7132d4b58ce00fa3%7C1484060607478%7C1%7C1486198628950",
        "t" : "691808127750a83d33704a565d8340ae9",
        "societyguester" : "691808127750a83d33704a565d8340ae9",
        "id" : "327550029",
        "xnsid" : "f42b25cf",
        "loginfrom" : "syshome"
        }

        # 可以重寫Spider類的start_requests方法,附帶Cookie值斤寇,發(fā)送POST請求
        def start_requests(self):
            for url in self.start_urls:
                yield scrapy.FormRequest(url, cookies = self.cookies, callback = self.parse_page)

        # 處理響應(yīng)內(nèi)容
        def parse_page(self, response):
            print "===========" + response.url
            with open("deng.html", "w") as filename:
                filename.write(response.body)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末桶癣,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子娘锁,更是在濱河造成了極大的恐慌牙寞,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異间雀,居然都是意外死亡悔详,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門惹挟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茄螃,“玉大人,你說我怎么就攤上這事连锯」椴裕” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵运怖,是天一觀的道長拼弃。 經(jīng)常有香客問我,道長摇展,這世上最難降的妖魔是什么吻氧? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮咏连,結(jié)果婚禮上盯孙,老公的妹妹穿的比我還像新娘。我一直安慰自己捻勉,他們只是感情好镀梭,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著踱启,像睡著了一般报账。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上埠偿,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天透罢,我揣著相機(jī)與錄音,去河邊找鬼冠蒋。 笑死羽圃,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的抖剿。 我是一名探鬼主播朽寞,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼斩郎!你這毒婦竟也來了脑融?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤缩宜,失蹤者是張志新(化名)和其女友劉穎肘迎,沒想到半個月后甥温,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡妓布,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年姻蚓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匣沼。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡狰挡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肛著,到底是詐尸還是另有隱情圆兵,我是刑警寧澤跺讯,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布枢贿,位于F島的核電站,受9級特大地震影響刀脏,放射性物質(zhì)發(fā)生泄漏局荚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一愈污、第九天 我趴在偏房一處隱蔽的房頂上張望耀态。 院中可真熱鬧,春花似錦暂雹、人聲如沸首装。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仙逻。三九已至,卻和暖如春涧尿,著一層夾襖步出監(jiān)牢的瞬間系奉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工姑廉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缺亮,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓桥言,卻偏偏與公主長得像萌踱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子号阿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理并鸵,服務(wù)發(fā)現(xiàn),斷路器倦西,智...
    卡卡羅2017閱讀 134,629評論 18 139
  • 模擬登陸時能真,必須保證settings.py里的 COOKIES_ENABLED (Cookies中間件) 處于開啟...
    博行天下閱讀 2,946評論 7 11
  • 很多網(wǎng)站的全部內(nèi)容需要登錄后才能查看,因此本文會介紹一個模擬登錄知乎并輸出自己關(guān)注話題的小例子。 step1:獲取...
    下水道潛水員閱讀 454評論 0 0
  • 模擬登錄知乎 這幾天在研究模擬登錄粉铐, 以知乎 - 與世界分享你的知識疼约、經(jīng)驗(yàn)和見解為例。實(shí)現(xiàn)過程遇到不少疑問蝙泼,借鑒了...
    sunhaiyu閱讀 27,124評論 51 115
  • 西湖 時間又近盛夏 回去不會回來的溫暖就這樣那樣的消失又出現(xiàn) 我開心只是寫在心里,卻忘了如何表達(dá) 在這年輕和青春的...
    鷹叔閱讀 191評論 0 0