您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關python如何進行scrapy操作cookie爬取博客涉及browsercookie,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
第一個要了解的知識點是使用 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)容。
獲取了 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)
可以直接獲取到后臺菜單。
在 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就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。