溫馨提示×

溫馨提示×

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

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

python如何進行scrapy操作cookie爬取博客涉及browsercookie

發(fā)布時間:2021-11-15 09:13:24 來源:億速云 閱讀:207 作者:柒染 欄目:開發(fā)技術

這篇文章將為大家詳細講解有關python如何進行scrapy操作cookie爬取博客涉及browsercookie,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

browsercookie 知識鋪墊

第一個要了解的知識點是使用 browsercookie 獲取瀏覽器 cookie ,該庫使用命令 pip install browsercookie 安裝即可。

接下來獲取 firefox 瀏覽器的 cookie,不使用 chrome 谷歌瀏覽器的原因是在 80 版本之后,其 cookie 的加密方式進行了修改,所以使用 browsercookie 模塊會出現(xiàn)如下錯誤

win32crypt must be available to decrypt Chrome cookie on Windows

獲取 cookie 的代碼如下所示:

import browsercookie

firefox_cookiejar = browsercookie.firefox()

for c in firefox_cookiejar:
    print(c)

運行代碼,輸出如下格式內(nèi)容。

python如何進行scrapy操作cookie爬取博客涉及browsercookie

獲取了 cookies 之后,就可以訪問之后登錄后才能訪問的頁面了(前提是在火狐瀏覽器登錄過一次)。

下面拿 某管理中心舉例,在火狐瀏覽器登錄過之后,使用 browsercookie 獲取 cookie 之后,就可以直接訪問后臺接口。

import browsercookie
import requests

firefox_cookiejar = browsercookie.firefox()

# for c in firefox_cookiejar:
#     print(c)

res = requests.get("https://img-home.csdnimg.cn/data_json/jsconfig/menu_path.json", cookies=firefox_cookiejar)
print(res.text)

可以直接獲取到后臺菜單。

python如何進行scrapy操作cookie爬取博客涉及browsercookie

使用 browsercookie 實現(xiàn) 自動化點贊

在 scrapy 框架中,已經(jīng)內(nèi)置了一個 CookiesMiddleware 用于處理 cookies,我們這次通過繼承 CookiesMiddleware ,然后使用 browsercookie 庫完成點贊器的研發(fā)(僅做了一個測試案例,沒有使用并發(fā)哦)

打開 middlewares.py 文件,編寫自定義的類:

from scrapy.downloadermiddlewares.cookies import CookiesMiddleware
import browsercookie
class BrowserCookiesDownloaderMiddleware(CookiesMiddleware):
    def __init__(self, debug=False):
        super().__init__(debug)
        self.load_browser_cookies()

    def load_browser_cookies(self):
        # 注意這個地方的名字叫做 firefox
        jar = self.jars['firefox']
        firefox_cookiejar = browsercookie.firefox()
        for cookie in firefox_cookiejar:
            jar.set_cookie(cookie)

上述類的核心內(nèi)容是使用 browsercookie 對瀏覽器的 cookie 進行提取,存儲到 CookieJar 類型的字典 jars 中,后續(xù)請求的時候,在進行調(diào)用。

同步在 settings.py 文件中禁用默認的 CookiesMiddleware,啟用咱們自定義的新類。

DOWNLOADER_MIDDLEWARES = {
    'scrapy.downloadermiddlewares.cookies.CookiesMiddleware': None,
    'csdn.middlewares.BrowserCookiesDownloaderMiddleware': 543,
}

在編寫爬蟲核心函數(shù),重點修改 Request 請求為 POST 請求,并且攜帶相關參數(shù),meta={'cookiejar':COOKIEJAR}。
代碼如下所示:

import scrapy
class ClikeSpider(scrapy.Spider):
    name = 'clike'
    allowed_domains = ['csdn.net']
    like_url = 'https://blog.csdn.net/phoenix/web/v1/article/like'
    def start_requests(self):
        data = {
            "articleId": "120845464",
        }
        yield scrapy.FormRequest(url=self.like_url, formdata=data, meta={'cookiejar': 'firefox'})
    def parse(self, response):
        print(response.json())

運行爬蟲之后,在日志中可以發(fā)現(xiàn)成功的點贊了。

python如何進行scrapy操作cookie爬取博客涉及browsercookie

關于python如何進行scrapy操作cookie爬取博客涉及browsercookie就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

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

AI