python实战scrapy操作cookie爬取博客涉及browsercookie
作者:梦想橡皮擦 发布时间:2023-08-13 16:56:00
browsercookie 知识铺垫
第一个要了解的知识点是使用 browsercookie 获取浏览器 cookie ,该库使用命令 pip install browsercookie
安装即可。
接下来获取 firefox
浏览器的 cookie,不使用 chrome
谷歌浏览器的原因是在 80
版本之后,其 cookie 的加密方式进行了修改,所以使用 browsercookie
模块会出现如下错误
win32crypt must be available to decrypt Chrome cookie on Windows
获取 cookie 的代码如下所示:
import browsercookie
firefox_cookiejar = browsercookie.firefox()
for c in firefox_cookiejar:
print(c)
运行代码,输出如下格式内容。
获取了 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)
可以直接获取到后台菜单。
使用 browsercookie 实现 自动化点赞
在 scrapy 框架中,已经内置了一个 CookiesMiddleware
用于处理 cookies,我们这次通过继承 CookiesMiddleware
,然后使用 browsercookie 库完成点赞器的研发(仅做了一个测试案例,没有使用并发哦)
打开 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)
上述类的核心内容是使用 browsercookie
对浏览器的 cookie 进行提取,存储到 CookieJar
类型的字典 jars
中,后续请求的时候,在进行调用。
同步在 settings.py
文件中禁用默认的 CookiesMiddleware
,启用咱们自定义的新类。
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.cookies.CookiesMiddleware': None,
'csdn.middlewares.BrowserCookiesDownloaderMiddleware': 543,
}
在编写爬虫核心函数,重点修改 Request
请求为 POST 请求,并且携带相关参数,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())
运行爬虫之后,在日志中可以发现成功的点赞了。
来源:https://blog.csdn.net/hihell/article/details/121281368
猜你喜欢
- 本文实例讲述了python实现写日志封装类。分享给大家供大家参考。具体如下:# encoding:utf-8import sysimport
- Python 的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。元组创建很简单,只需要在括号中添加元素,并使
- IE 的弹窗常用的有两种,不外乎是 window.open 与 window.showModalDialog,前者兼容性好,后者
- 今天给大家推荐一款很好用的Python编辑器,全世界90%Python开发者都会用的开发工具------Pycharm,完全免费哦1. 百度
- 找到工具》选项》Designers》表设计器和数据库设计器 然后将“阻止保存要求重新创建表的更改” 的这一项的钩钩去掉就OK了
- 假如不使用INSTEAD OF触发器或可更新分区视图而是通过视图来修改数据,那么再修改之前,请考虑下列准则:◆如果在视图定义中使用了 WIT
- 相信有很多人有用程序向Excel导数据的需求, 且做过. 一般导出一些文本数据是很方便的, 可选方法很多, 比如拼接文本字符串存.cvs格式
- 引言 在前篇文章中(SQL查询入门(上篇),我对数据库查询的基本概念以及单表查询做了详细的解释,本篇文章中,主要说明SQL中的各种连接以及使
- python svm实现手写数字识别——直接可用最近在做个围棋识别的项目,需要识别下面的数字,如下图:我发现现在网上很多代码是良莠不齐,…真
- PyCharm最近在用PyCharm的时候运行结果总是在Console里输出,而不是在run输出,下面列出解决方法1.点击工具栏run,再点
- 本文详细介绍了array_slice函数的详细用法以及一些常用的array_slice实例程序,分享给大家供大家参考。具体分析如下:arra
- 简介在各个语言之中都有时间类型的处理,因为这个地球是圆的(我仿佛在讲废话),有多个时区,每个时区的时间不一样,在程序中有必要存在一种方式,或
- 一、问题描述如题,在使用pip install xxx的方法安装python库,或者是基于python的软件时,报错“E
- 为了熟悉Python基础语法,学习了一个经典的案例:飞机大战,最后实现效果如下:实现步骤:①下载64位对应python版本的pygame:p
- 一、前言很多时候,我们都有远程控制电脑的需求。比如正在下载某样东西,需要让电脑在下载完后关机。或者你需要监控一个程序的运行状况等。今天我们就
- 用VBS语言实现的一个简单网页计算器,功能:可以进行加法、减法、乘法、除法、取反、开根号、及指数运算。虽然简单但是比起windows xp自
- 一、Selenium介绍与配置1.Selenium简介Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具
- 以前在工作中遇到一个问题,当表单发送的数据量很大时,就会报错。查阅MSDN了解到,原因是微软对用Request.Form()可接收的最大数据
- QL Server事件探查器(Profiler)可以帮助数据库管理员跟踪SQL Server数据库所执行的特定事件,监视数据库的行为;并将这
- 线性回归是机器学习中的基础算法之一,属于监督学习中的回归问题,算法的关键在于如何最小化代价函数,通常使用梯度下降或者正规方程(最小二乘法),