亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python爬蟲(chóng)框架scrapy實(shí)現(xiàn)模擬登錄操作示例

 更新時(shí)間:2018年08月02日 10:42:10   作者:Charles.L  
這篇文章主要介紹了python爬蟲(chóng)框架scrapy實(shí)現(xiàn)模擬登錄操作,結(jié)合實(shí)例形式分析了scrapy框架實(shí)現(xiàn)模擬登陸操作的步驟、相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了python爬蟲(chóng)框架scrapy實(shí)現(xiàn)模擬登錄操作。分享給大家供大家參考,具體如下:

一、背景:

初來(lái)乍到的pythoner,剛開(kāi)始的時(shí)候覺(jué)得所有的網(wǎng)站無(wú)非就是分析HTML、json數(shù)據(jù),但是忽略了很多的一個(gè)問(wèn)題,有很多的網(wǎng)站為了反爬蟲(chóng),除了需要高可用代理IP地址池外,還需要登錄。例如知乎,很多信息都是需要登錄以后才能爬取,但是頻繁登錄后就會(huì)出現(xiàn)驗(yàn)證碼(有些網(wǎng)站直接就讓你輸入驗(yàn)證碼),這就坑了,畢竟運(yùn)維同學(xué)很辛苦,該反的還得反,那我們?cè)趺崔k呢?這不說(shuō)驗(yàn)證碼的事兒,你可以自己手動(dòng)輸入驗(yàn)證,或者直接用云打碼平臺(tái),這里我們介紹一個(gè)scrapy的登錄用法。

 測(cè)試登錄地址:http://example.webscraping.com/places/default/user/login

 測(cè)試主頁(yè):http://example.webscraping.com/user/profile

1、這里不在敘述如何創(chuàng)建scrapy項(xiàng)目和spider,可以看前面的相關(guān)文章

二、快速登錄方法

我們?cè)谶@里做了一個(gè)簡(jiǎn)單的介紹,我們都知道scrapy的基本請(qǐng)求流程是start_request方法遍歷start_urls列表,然后make_requests_from_url方法,里面執(zhí)行Request方法,請(qǐng)求start_urls里面的地址,但是這里我們用的不再是GET方法,而用的是POST方法,也就常說(shuō)的登錄。

1、首先我們改寫start_reqeusts方法,直接GET登錄頁(yè)面的HTML信息(有些人說(shuō)你不是POST登錄么,干嘛還GET,別著急,你得先GET到登錄頁(yè)面的登錄信息,才知道登錄的賬戶、密碼等怎么提交,往哪里提交)

2、start_request方法GET到數(shù)據(jù)后,用callback參數(shù),執(zhí)行拿到response后要接下來(lái)執(zhí)行哪個(gè)方法,然后在login方法里面寫入登錄用戶名和密碼(還是老樣子,一定要用dict),然后只用Request子類scrapy.FormRequest這個(gè)方法提交數(shù)據(jù),這我一個(gè)的是FormRequest.from_response方法。

有些人會(huì)問(wèn),這個(gè)from__response的基本使用是條用是需要傳入一個(gè)response對(duì)象作為第一個(gè)參數(shù),這個(gè)方法會(huì)從頁(yè)面中form表單中,幫助用戶創(chuàng)建FormRequest對(duì)象,最最最最重要的是它會(huì)幫你把隱藏的input標(biāo)簽中的信息自動(dòng)跳入表達(dá),使用這個(gè)中方法,我們直接寫用戶名和密碼即可,我們?cè)谧詈竺嬖俳榻B傳統(tǒng)方法。

3、parse_login方法是提交完表單后callback回調(diào)函數(shù)指定要執(zhí)行的方法,為了驗(yàn)證是否成功。這里我們直接在response中搜索Welcome Liu這個(gè)字眼就證明登錄成功。這個(gè)好理解,重點(diǎn)是yield  from super().start_resquests(),這個(gè)代表著如果一旦登錄成功后,就直接帶著登錄成功后Cookie值,方法start_urls里面的地址。這樣的話登錄成功后的response可以直接在parse里面寫。

# -*- coding: utf-8 -*-
import scrapy
from scrapy import FormRequest,Request
class ExampleLoginSpider(scrapy.Spider):
  name = "login_"
  allowed_domains = ["example.webscraping.com"]
  start_urls = ['http://example.webscraping.com/user/profile']
  login_url = 'http://example.webscraping.com/places/default/user/login'
  def parse(self, response):
    print(response.text)
  def start_requests(self):
    yield scrapy.Request(self.login_url,callback=self.login)
  def login(self,response):
    formdata = {
      'email':'liushuo@webscraping.com','password':'12345678'}
    yield FormRequest.from_response(response,formdata=formdata,
                    callback=self.parse_login)
  def parse_login(self,response):
    # print('>>>>>>>>'+response.text)
    if 'Welcome Liu' in response.text:
      yield from super().start_requests()

有的同學(xué)可能問(wèn)了,login方法里面不是應(yīng)該寫reture 么,其實(shí)上面的寫法跟下面的這種寫法是一樣效果,如果再有個(gè)CSRF的話,也可以直接在login里面寫拿到CSRF信息,寫入到formdata里面跟用戶名和密碼一起提交。

復(fù)制代碼 代碼如下:
return [FormRequest.from_response(response,formdata=formdata,callback=self.parse_login)]

登錄成功

三、傳統(tǒng)登錄方法:

1、首先要明確一件事情,一般情況下需要登錄的網(wǎng)站,不只需要登錄用戶和密碼,接下來(lái)我們聊聊上面說(shuō)的傳統(tǒng)登錄模式。用戶在登錄的時(shí)候并不是只需要登錄賬戶信息,除了常見(jiàn)直觀的驗(yàn)證碼和CSRF信息外,也有可能需要提交其它信息,我們必須把它們都提取到一起提交給服務(wù)器。

2、我們?cè)趂orm表單下面找到了一個(gè)display:none的div標(biāo)簽,里面的input標(biāo)簽的value值正好是我們要提交的數(shù)據(jù),那我們就提取到他。

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python Socket編程技巧總結(jié)》、《Python正則表達(dá)式用法總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 基于python實(shí)現(xiàn)分析識(shí)別文章/內(nèi)容中的高頻詞和關(guān)鍵詞

    基于python實(shí)現(xiàn)分析識(shí)別文章/內(nèi)容中的高頻詞和關(guān)鍵詞

    要分析一篇文章的高頻詞和關(guān)鍵詞,可以使用 Python 中的 nltk 庫(kù)和 collections 庫(kù)或者jieba庫(kù)來(lái)實(shí)現(xiàn),本篇文章介紹基于兩種庫(kù)分別實(shí)現(xiàn)分析內(nèi)容中的高頻詞和關(guān)鍵詞,需要的朋友可以參考下
    2023-09-09
  • Sanic框架基于類的視圖用法示例

    Sanic框架基于類的視圖用法示例

    這篇文章主要介紹了Sanic框架基于類的視圖用法,結(jié)合實(shí)例形式分析了Sanic框架基于類的視圖定義、使用及相關(guān)路由操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-07-07
  • Python生成驗(yàn)證碼實(shí)例

    Python生成驗(yàn)證碼實(shí)例

    這篇文章主要介紹了Python生成驗(yàn)證碼的方法,具有很好的實(shí)用價(jià)值,代碼結(jié)構(gòu)清晰易懂,需要的朋友可以參考下
    2014-08-08
  • Python2手動(dòng)安裝更新pip過(guò)程實(shí)例解析

    Python2手動(dòng)安裝更新pip過(guò)程實(shí)例解析

    這篇文章主要介紹了Python2手動(dòng)安裝更新pip過(guò)程實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • python調(diào)用并鏈接MATLAB腳本詳解

    python調(diào)用并鏈接MATLAB腳本詳解

    這篇文章主要介紹了python調(diào)用并鏈接MATLAB腳本詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python中的QPixmap用法詳解

    Python中的QPixmap用法詳解

    QPixmap主要用于繪圖,針對(duì)圖像顯示而最佳化設(shè)計(jì),這篇文章主要介紹了Python中的QPixmap用法,對(duì)QPixmap使相關(guān)知識(shí)感興趣的朋友一起看看吧
    2023-03-03
  • Pytorch GPU內(nèi)存占用很高,但是利用率很低如何解決

    Pytorch GPU內(nèi)存占用很高,但是利用率很低如何解決

    這篇文章主要介紹了Pytorch GPU內(nèi)存占用很高,但是利用率很低的原因及解決方法,具有很好的參考價(jià)值,希望對(duì)大家 有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • python網(wǎng)絡(luò)爬蟲(chóng)實(shí)現(xiàn)發(fā)送短信驗(yàn)證碼的方法

    python網(wǎng)絡(luò)爬蟲(chóng)實(shí)現(xiàn)發(fā)送短信驗(yàn)證碼的方法

    這篇文章主要介紹了python網(wǎng)絡(luò)爬蟲(chóng)實(shí)現(xiàn)發(fā)送短信驗(yàn)證碼的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • pandas如何給DataFrame新增列并賦值

    pandas如何給DataFrame新增列并賦值

    這篇文章主要介紹了pandas如何給DataFrame新增列并賦值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python面向?qū)ο蟪绦蛟O(shè)計(jì)之繼承、多態(tài)原理與用法詳解

    Python面向?qū)ο蟪绦蛟O(shè)計(jì)之繼承、多態(tài)原理與用法詳解

    這篇文章主要介紹了Python面向?qū)ο蟪绦蛟O(shè)計(jì)之繼承、多態(tài),結(jié)合實(shí)例形式分析了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中繼承、多態(tài)的相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-03-03

最新評(píng)論