python实战scrapy操作cookie爬取博客涉及browsercookie
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())
运行爬虫之后,在日志中可以发现成功的点赞了。
以上就是python实战scrapy操作cookie爬取博客涉及browsercookie的详细内容,更多关于scrapy操作cookie爬取博客的资料请关注脚本之家其它相关文章!
相关文章
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
这篇文章主要介绍了pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-09-09Django解决无法从request.POST中获取URL传进来的参数
这篇文章主要介绍了Django解决无法从request.POST中获取URL传进来的参数问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-12-12Python的collections模块中的OrderedDict有序字典
字典是无序的,但是collections的OrderedDict类为我们提供了一个有序的字典结构,名副其实的Ordered+Dict,下面通过两个例子来简单了解下Python的collections模块中的OrderedDict有序字典:2016-07-07浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
这篇文章主要介绍了浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-06-06Python网络编程之HTTP客户端模块urllib与urllib3
这篇文章介绍了Python网络编程之HTTP客户端模块urllib与urllib3,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-05-05
最新评论