溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用Python登錄豆瓣并爬取影評

發布時間:2021-08-24 20:20:38 來源:億速云 閱讀:191 作者:chen 欄目:開發技術

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

目錄
  • 一、需求背景

  • 二、功能描述

  • 三、技術方案

  • 四、登錄豆瓣

    • 1.分析豆瓣登錄接口

    • 2.代碼實現登錄豆瓣

    • 3.保存會話狀態

    • 4.這個Session對象是我們常說的session嗎?

  • 五、爬取影評

    • 1.分析豆瓣影評接口

    • 2.爬取一條影評數據

    • 3.影評內容提取

    • 4.批量爬取

  • 六、分析影評

    • 1.使用結巴分詞

  • 七、總結

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

    1. 會話狀態管理(如用戶登錄狀態、購物車、游戲分數或其它需要記錄的信息)

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

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

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

    一、需求背景

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

    二、功能描述

    我們使用requests庫登錄豆瓣,然后爬取影評,最后生成詞云!

    為什么我們之前的案例(京東、優酷等)中不需要登錄,而今天爬取豆瓣需要登錄呢?那是因為豆瓣在沒有登錄狀態情況下只允許你查看前200條影評,之后就需要登錄才能查看,這也算是一種反扒手段!

    如何用Python登錄豆瓣并爬取影評

    三、技術方案

    我們看下簡單的技術方案,大致可以分為三部分:

    1. 分析豆瓣的登錄接口并用requests庫實現登錄并保存cookie

    2. 分析豆瓣影評接口實現批量抓取數據

    3. 使用詞云做影評數據分析

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

    四、登錄豆瓣

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

    1.分析豆瓣登錄接口

    打開登錄頁面,然后調出調試窗口,輸入用戶名和密碼,點擊登錄。

    如何用Python登錄豆瓣并爬取影評 

    這里豬哥建議輸入錯誤的密碼,這樣就不會因為頁面跳轉而捕捉不到請求!上面我們便獲取到登錄請求的URL:https://accounts.douban.com/j/mobile/login/basic

    因為是一個POST請求,所以我們還需要看看請求登錄時攜帶的參數,我們將調試窗口往下拉查看Form Data。

    如何用Python登錄豆瓣并爬取影評

    2.代碼實現登錄豆瓣

    得到登錄請求URL和參數后,我們就可以來用requests庫來寫一個登錄功能!

    如何用Python登錄豆瓣并爬取影評

    3.保存會話狀態

    上期我們在爬取優酷彈幕的時候我們是復制瀏覽器中的Cookie到請求頭中這來來保存會話狀態,但是我們如何讓代碼自動保存Cookie呢?

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

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

    但是前面我們介紹requests庫的時候就說過:

    requests庫是一個基于urllib/3的第三方網絡庫,它的特點是功能強大,API優雅。由上圖我們可以看到,對于http客戶端python官方文檔也推薦我們使用requests庫,實際工作中requests庫也是使用的比較多的庫。

    所以今天我們來看看requests庫是如何優雅的幫我們自動保存Cookie的?我們來對代碼做一點微調,使之能自動保存Cookie維持會話狀態!

    如何用Python登錄豆瓣并爬取影評 

    上述代碼中,我們做了兩處改動:

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

    2. 發起請求不再是原來的requests對象,而是變成了Session對象

    我們可以看到發起請求的對象變成了session對象,它和原來的requests對象發起請求方式一樣,只不過它每次請求會自動帶上Cookie,所以后面我們都用Session對象來發起請求!

    4.這個Session對象是我們常說的session嗎?

    講到這里也許有同學會問:requests.Session對象是不是我們常說的session呢?

    答案當然不是,我們常說的session是保存在服務端的,而requests.Session對象只是一個用于保存Cookie的對象而已,我們可以看看它的源碼介紹

    如何用Python登錄豆瓣并爬取影評 

    所以大家千萬不要將requests.Session對象與session技術搞混了!

    五、爬取影評

    我們實現了登錄和保存會話狀態之后,就可以開始干正事啦!

    1.分析豆瓣影評接口

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

    如何用Python登錄豆瓣并爬取影評 

    然后下拉找到影評,調出調試窗口,找到加載影評的URL

    如何用Python登錄豆瓣并爬取影評

    2.爬取一條影評數據

    但是爬取下來的是一個HTML網頁數據,我們需要將影評數據提取出來

    如何用Python登錄豆瓣并爬取影評

    3.影評內容提取

    上圖中我們可以看到爬取返回的是html,而影評數據便是嵌套在html標簽中,如何提取影評內容呢?

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

    我們先來分析下返回html 的網頁結構

    如何用Python登錄豆瓣并爬取影評 

    我們發現影評內容都是在<span class="short"></span>這個標簽里,那我們 就可以寫正則來匹配這個標簽里的內容啦!

    如何用Python登錄豆瓣并爬取影評 

    檢查下提取的內容

    如何用Python登錄豆瓣并爬取影評

    4.批量爬取

    我們爬取、提取、保存完一條數據之后,我們來批量爬取一下。根據前面幾次爬取的經驗,我們知道批量爬取的關鍵在于找到分頁參數,我們可以很快發現URL中有一個start參數便是控制分頁的參數。

    如何用Python登錄豆瓣并爬取影評 

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

    六、分析影評

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

    1.使用結巴分詞

    因為我們下載的影評是一段一段的文字,而我們做的詞云是統計單詞出現的次數,所以需要先分詞!

    如何用Python登錄豆瓣并爬取影評

    2.使用詞云分析

    如何用Python登錄豆瓣并爬取影評 

    最終成果:

    如何用Python登錄豆瓣并爬取影評 

    七、總結

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

    1. 學習如何使用requests庫發起POST請求

    2. 學習了如何使用requests庫登錄網站

    3. 學習了如何使用requests庫的Session對象保持會話狀態

    4. 學習了如何使用正則表達式提取網頁標簽中的內容

    鑒于篇幅有限,爬蟲過程中遇到的很多細節和技巧并沒有完全寫出來,所以希望大家能自己動手實踐

    到此,關于“如何用Python登錄豆瓣并爬取影評”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女