溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何用Python登錄豆瓣并爬取影評(píng)

發(fā)布時(shí)間:2021-08-24 20:20:38 來源:億速云 閱讀:157 作者:chen 欄目:開發(fā)技術(shù)

這篇文章主要介紹“如何用Python登錄豆瓣并爬取影評(píng)”,在日常操作中,相信很多人在如何用Python登錄豆瓣并爬取影評(píng)問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”如何用Python登錄豆瓣并爬取影評(píng)”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

目錄
  • 一、需求背景

  • 二、功能描述

  • 三、技術(shù)方案

  • 四、登錄豆瓣

    • 1.分析豆瓣登錄接口

    • 2.代碼實(shí)現(xiàn)登錄豆瓣

    • 3.保存會(huì)話狀態(tài)

    • 4.這個(gè)Session對(duì)象是我們常說的session嗎?

  • 五、爬取影評(píng)

    • 1.分析豆瓣影評(píng)接口

    • 2.爬取一條影評(píng)數(shù)據(jù)

    • 3.影評(píng)內(nèi)容提取

    • 4.批量爬取

  • 六、分析影評(píng)

    • 1.使用結(jié)巴分詞

  • 七、總結(jié)

    上一篇我們講過Cookie相關(guān)的知識(shí),了解到Cookie是為了交互式web而誕生的,它主要用于以下三個(gè)方面:

    1. 會(huì)話狀態(tài)管理(如用戶登錄狀態(tài)、購(gòu)物車、游戲分?jǐn)?shù)或其它需要記錄的信息)

    2. 個(gè)性化設(shè)置(如用戶自定義設(shè)置、主題等)

    3. 瀏覽器行為跟蹤(如跟蹤分析用戶行為等)

    我們今天就用requests庫(kù)來登錄豆瓣然后爬取影評(píng)為例子,用代碼講解下Cookie的會(huì)話狀態(tài)管理(登錄)功能。

    一、需求背景

    豆瓣口碑一直不錯(cuò),有些書或者電影的推薦都很不錯(cuò),所以我們今天來爬取下豆瓣的影評(píng),然后生成詞云,看看效果如何吧!

    二、功能描述

    我們使用requests庫(kù)登錄豆瓣,然后爬取影評(píng),最后生成詞云!

    為什么我們之前的案例(京東、優(yōu)酷等)中不需要登錄,而今天爬取豆瓣需要登錄呢?那是因?yàn)槎拱暝跊]有登錄狀態(tài)情況下只允許你查看前200條影評(píng),之后就需要登錄才能查看,這也算是一種反扒手段!

    如何用Python登錄豆瓣并爬取影評(píng)

    三、技術(shù)方案

    我們看下簡(jiǎn)單的技術(shù)方案,大致可以分為三部分:

    1. 分析豆瓣的登錄接口并用requests庫(kù)實(shí)現(xiàn)登錄并保存cookie

    2. 分析豆瓣影評(píng)接口實(shí)現(xiàn)批量抓取數(shù)據(jù)

    3. 使用詞云做影評(píng)數(shù)據(jù)分析

    方案確定之后我們就開始實(shí)際操作吧!

    四、登錄豆瓣

    做爬蟲前我們都是先從瀏覽器開始,使用調(diào)試窗口查看url。

    1.分析豆瓣登錄接口

    打開登錄頁(yè)面,然后調(diào)出調(diào)試窗口,輸入用戶名和密碼,點(diǎn)擊登錄。

    如何用Python登錄豆瓣并爬取影評(píng) 

    這里豬哥建議輸入錯(cuò)誤的密碼,這樣就不會(huì)因?yàn)轫?yè)面跳轉(zhuǎn)而捕捉不到請(qǐng)求!上面我們便獲取到登錄請(qǐng)求的URL:https://accounts.douban.com/j/mobile/login/basic

    因?yàn)槭且粋€(gè)POST請(qǐng)求,所以我們還需要看看請(qǐng)求登錄時(shí)攜帶的參數(shù),我們將調(diào)試窗口往下拉查看Form Data。

    如何用Python登錄豆瓣并爬取影評(píng)

    2.代碼實(shí)現(xiàn)登錄豆瓣

    得到登錄請(qǐng)求URL和參數(shù)后,我們就可以來用requests庫(kù)來寫一個(gè)登錄功能!

    如何用Python登錄豆瓣并爬取影評(píng)

    3.保存會(huì)話狀態(tài)

    上期我們?cè)谂廊?yōu)酷彈幕的時(shí)候我們是復(fù)制瀏覽器中的Cookie到請(qǐng)求頭中這來來保存會(huì)話狀態(tài),但是我們?nèi)绾巫尨a自動(dòng)保存Cookie呢?

    也許你見過或者使用過urllib庫(kù),它用來保存Cookie的方式如下:

    cookie = http.cookiejar.CookieJar()
    handler = urllib.request.HttpCookieProcessor(cookie)
    opener = urllib.request.build_opener(handler)
    opener(url)

    但是前面我們介紹requests庫(kù)的時(shí)候就說過:

    requests庫(kù)是一個(gè)基于urllib/3的第三方網(wǎng)絡(luò)庫(kù),它的特點(diǎn)是功能強(qiáng)大,API優(yōu)雅。由上圖我們可以看到,對(duì)于http客戶端python官方文檔也推薦我們使用requests庫(kù),實(shí)際工作中requests庫(kù)也是使用的比較多的庫(kù)。

    所以今天我們來看看requests庫(kù)是如何優(yōu)雅的幫我們自動(dòng)保存Cookie的?我們來對(duì)代碼做一點(diǎn)微調(diào),使之能自動(dòng)保存Cookie維持會(huì)話狀態(tài)!

    如何用Python登錄豆瓣并爬取影評(píng) 

    上述代碼中,我們做了兩處改動(dòng):

    1. 在最上面增加一行s = requests.Session(),生成Session對(duì)象用來保存Cookie

    2. 發(fā)起請(qǐng)求不再是原來的requests對(duì)象,而是變成了Session對(duì)象

    我們可以看到發(fā)起請(qǐng)求的對(duì)象變成了session對(duì)象,它和原來的requests對(duì)象發(fā)起請(qǐng)求方式一樣,只不過它每次請(qǐng)求會(huì)自動(dòng)帶上Cookie,所以后面我們都用Session對(duì)象來發(fā)起請(qǐng)求!

    4.這個(gè)Session對(duì)象是我們常說的session嗎?

    講到這里也許有同學(xué)會(huì)問:requests.Session對(duì)象是不是我們常說的session呢?

    答案當(dāng)然不是,我們常說的session是保存在服務(wù)端的,而requests.Session對(duì)象只是一個(gè)用于保存Cookie的對(duì)象而已,我們可以看看它的源碼介紹

    如何用Python登錄豆瓣并爬取影評(píng) 

    所以大家千萬不要將requests.Session對(duì)象與session技術(shù)搞混了!

    五、爬取影評(píng)

    我們實(shí)現(xiàn)了登錄和保存會(huì)話狀態(tài)之后,就可以開始干正事啦!

    1.分析豆瓣影評(píng)接口

    首先在豆瓣中找到自己想要分析的電影,這里選擇一部美國(guó)電影《荒野生存》

    如何用Python登錄豆瓣并爬取影評(píng) 

    然后下拉找到影評(píng),調(diào)出調(diào)試窗口,找到加載影評(píng)的URL

    如何用Python登錄豆瓣并爬取影評(píng)

    2.爬取一條影評(píng)數(shù)據(jù)

    但是爬取下來的是一個(gè)HTML網(wǎng)頁(yè)數(shù)據(jù),我們需要將影評(píng)數(shù)據(jù)提取出來

    如何用Python登錄豆瓣并爬取影評(píng)

    3.影評(píng)內(nèi)容提取

    上圖中我們可以看到爬取返回的是html,而影評(píng)數(shù)據(jù)便是嵌套在html標(biāo)簽中,如何提取影評(píng)內(nèi)容呢?

    這里我們使用正則表達(dá)式來匹配想要的標(biāo)簽內(nèi)容,當(dāng)然也有更高級(jí)的提取方法,比如使用某些庫(kù)(比如bs4、xpath等)去解析html提取內(nèi)容,而且使用庫(kù)效率也比較高,但這是我們后面的內(nèi)容,我們今天就用正則來匹配!

    我們先來分析下返回html 的網(wǎng)頁(yè)結(jié)構(gòu)

    如何用Python登錄豆瓣并爬取影評(píng) 

    我們發(fā)現(xiàn)影評(píng)內(nèi)容都是在<span class="short"></span>這個(gè)標(biāo)簽里,那我們 就可以寫正則來匹配這個(gè)標(biāo)簽里的內(nèi)容啦!

    如何用Python登錄豆瓣并爬取影評(píng) 

    檢查下提取的內(nèi)容

    如何用Python登錄豆瓣并爬取影評(píng)

    4.批量爬取

    我們爬取、提取、保存完一條數(shù)據(jù)之后,我們來批量爬取一下。根據(jù)前面幾次爬取的經(jīng)驗(yàn),我們知道批量爬取的關(guān)鍵在于找到分頁(yè)參數(shù),我們可以很快發(fā)現(xiàn)URL中有一個(gè)start參數(shù)便是控制分頁(yè)的參數(shù)。

    如何用Python登錄豆瓣并爬取影評(píng) 

    這里只爬取了25頁(yè)就爬完,我們可以去瀏覽器中驗(yàn)證一下,是不是真的只有25頁(yè),豬哥驗(yàn)證過確實(shí)只有25頁(yè)!

    六、分析影評(píng)

    數(shù)據(jù)抓取下來之后,我們就來使用詞云分析一下這部電影吧!

    1.使用結(jié)巴分詞

    因?yàn)槲覀兿螺d的影評(píng)是一段一段的文字,而我們做的詞云是統(tǒng)計(jì)單詞出現(xiàn)的次數(shù),所以需要先分詞!

    如何用Python登錄豆瓣并爬取影評(píng)

    2.使用詞云分析

    如何用Python登錄豆瓣并爬取影評(píng) 

    最終成果:

    如何用Python登錄豆瓣并爬取影評(píng) 

    七、總結(jié)

    今天我們以爬取豆瓣為例子,學(xué)到了不少的東西,來總結(jié)一下:

    1. 學(xué)習(xí)如何使用requests庫(kù)發(fā)起POST請(qǐng)求

    2. 學(xué)習(xí)了如何使用requests庫(kù)登錄網(wǎng)站

    3. 學(xué)習(xí)了如何使用requests庫(kù)的Session對(duì)象保持會(huì)話狀態(tài)

    4. 學(xué)習(xí)了如何使用正則表達(dá)式提取網(wǎng)頁(yè)標(biāo)簽中的內(nèi)容

    鑒于篇幅有限,爬蟲過程中遇到的很多細(xì)節(jié)和技巧并沒有完全寫出來,所以希望大家能自己動(dòng)手實(shí)踐

    到此,關(guān)于“如何用Python登錄豆瓣并爬取影評(píng)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI