python實(shí)戰(zhàn)scrapy操作cookie爬取博客涉及browsercookie
browsercookie 知識(shí)鋪墊
第一個(gè)要了解的知識(shí)點(diǎn)是使用 browsercookie 獲取瀏覽器 cookie ,該庫(kù)使用命令 pip install browsercookie
安裝即可。
接下來獲取 firefox
瀏覽器的 cookie,不使用 chrome
谷歌瀏覽器的原因是在 80
版本之后,其 cookie 的加密方式進(jìn)行了修改,所以使用 browsercookie
模塊會(huì)出現(xiàn)如下錯(cuò)誤
win32crypt must be available to decrypt Chrome cookie on Windows
獲取 cookie 的代碼如下所示:
import browsercookie firefox_cookiejar = browsercookie.firefox() for c in firefox_cookiejar: print(c)
運(yùn)行代碼,輸出如下格式內(nèi)容。
獲取了 cookies 之后,就可以訪問之后登錄后才能訪問的頁(yè)面了(前提是在火狐瀏覽器登錄過一次)。
下面拿 某管理中心舉例,在火狐瀏覽器登錄過之后,使用 browsercookie 獲取 cookie 之后,就可以直接訪問后臺(tái)接口。
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)
可以直接獲取到后臺(tái)菜單。
使用 browsercookie 實(shí)現(xiàn) 自動(dòng)化點(diǎn)贊
在 scrapy 框架中,已經(jīng)內(nèi)置了一個(gè) CookiesMiddleware
用于處理 cookies,我們這次通過繼承 CookiesMiddleware
,然后使用 browsercookie 庫(kù)完成點(diǎn)贊器的研發(fā)(僅做了一個(gè)測(cè)試案例,沒有使用并發(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): # 注意這個(gè)地方的名字叫做 firefox jar = self.jars['firefox'] firefox_cookiejar = browsercookie.firefox() for cookie in firefox_cookiejar: jar.set_cookie(cookie)
上述類的核心內(nèi)容是使用 browsercookie
對(duì)瀏覽器的 cookie 進(jìn)行提取,存儲(chǔ)到 CookieJar
類型的字典 jars
中,后續(xù)請(qǐng)求的時(shí)候,在進(jìn)行調(diào)用。
同步在 settings.py
文件中禁用默認(rèn)的 CookiesMiddleware
,啟用咱們自定義的新類。
DOWNLOADER_MIDDLEWARES = { 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware': None, 'csdn.middlewares.BrowserCookiesDownloaderMiddleware': 543, }
在編寫爬蟲核心函數(shù),重點(diǎn)修改 Request
請(qǐng)求為 POST 請(qǐng)求,并且攜帶相關(guān)參數(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())
運(yùn)行爬蟲之后,在日志中可以發(fā)現(xiàn)成功的點(diǎn)贊了。
以上就是python實(shí)戰(zhàn)scrapy操作cookie爬取博客涉及browsercookie的詳細(xì)內(nèi)容,更多關(guān)于scrapy操作cookie爬取博客的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 提升Python Scrapy庫(kù)數(shù)據(jù)采集速度實(shí)現(xiàn)高效爬蟲
- 詳解如何優(yōu)化和調(diào)整Python中Scrapy的性能
- python爬蟲框架scrapy代理中間件掌握學(xué)習(xí)教程
- python爬蟲框架Scrapy基本應(yīng)用學(xué)習(xí)教程
- python scrapy拆解查看Spider類爬取優(yōu)設(shè)網(wǎng)極細(xì)講解
- python實(shí)戰(zhàn)項(xiàng)目scrapy管道學(xué)習(xí)爬取在行高手?jǐn)?shù)據(jù)
- python編程scrapy簡(jiǎn)單代碼實(shí)現(xiàn)搜狗圖片下載器
- Python爬蟲進(jìn)階Scrapy框架精文講解
- Scrapy基于Python構(gòu)建強(qiáng)大網(wǎng)絡(luò)爬蟲框架實(shí)例探究
相關(guān)文章
超詳細(xì)的Python安裝第三方庫(kù)常用方法匯總
電腦網(wǎng)絡(luò)有點(diǎn)問題,直接安裝第三方庫(kù)的時(shí)候出現(xiàn)了各種問題,所以在這篇文章里記錄一下各種安裝第三方庫(kù)的方法吧,下面這篇文章主要給大家介紹了關(guān)于Python安裝第三方庫(kù)常用方法的相關(guān)資料,需要的朋友可以參考下2022-04-04pycharm中如何自定義設(shè)置通過“ctrl+滾輪”進(jìn)行放大和縮小實(shí)現(xiàn)方法
這篇文章主要介紹了pycharm中如何自定義設(shè)置通過“ctrl+滾輪”進(jìn)行放大和縮小實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09Django解決無(wú)法從request.POST中獲取URL傳進(jìn)來的參數(shù)
這篇文章主要介紹了Django解決無(wú)法從request.POST中獲取URL傳進(jìn)來的參數(shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12Python的collections模塊中的OrderedDict有序字典
字典是無(wú)序的,但是collections的OrderedDict類為我們提供了一個(gè)有序的字典結(jié)構(gòu),名副其實(shí)的Ordered+Dict,下面通過兩個(gè)例子來簡(jiǎn)單了解下Python的collections模塊中的OrderedDict有序字典:2016-07-07淺談tensorflow使用張量時(shí)的一些注意點(diǎn)tf.concat,tf.reshape,tf.stack
這篇文章主要介紹了淺談tensorflow使用張量時(shí)的一些注意點(diǎn)tf.concat,tf.reshape,tf.stack,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06新手如何發(fā)布Python項(xiàng)目開源包過程詳解
這篇文章主要介紹了新手如何發(fā)布Python項(xiàng)目開源包過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07Request的中斷和ErrorHandler實(shí)例解析
這篇文章主要介紹了Request的中斷和ErrorHandler實(shí)例解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02Python網(wǎng)絡(luò)編程之HTTP客戶端模塊urllib與urllib3
這篇文章介紹了Python網(wǎng)絡(luò)編程之HTTP客戶端模塊urllib與urllib3,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05Python數(shù)據(jù)可視化Pyecharts庫(kù)實(shí)現(xiàn)桑葚圖效果
這篇文章主要介紹了Python數(shù)據(jù)可視化如何使用Pyecharts庫(kù)來實(shí)現(xiàn)桑葚圖效果圖,文中給出實(shí)現(xiàn)的示例代碼,有需要的朋友可以借鑒參考想,希望能夠有所幫助2021-09-09