文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-25 15:26

关注

这篇文章将为大家详细讲解有关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 browsercookiefirefox_cookiejar = browsercookie.firefox()for c in firefox_cookiejar:    print(c)

运行代码,输出如下格式内容。

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

获取了 cookies 之后,就可以访问之后登录后才能访问的页面了(前提是在火狐浏览器登录过一次)。

下面拿 某管理中心举例,在火狐浏览器登录过之后,使用 browsercookie 获取 cookie 之后,就可以直接访问后台接口。

import browsercookieimport requestsfirefox_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 实现 自动化点赞

在 scrapy 框架中,已经内置了一个 CookiesMiddleware 用于处理 cookies,我们这次通过继承 CookiesMiddleware ,然后使用 browsercookie 库完成点赞器的研发(仅做了一个测试案例,没有使用并发哦)

打开 middlewares.py 文件,编写自定义的类:

from scrapy.downloadermiddlewares.cookies import CookiesMiddlewareimport browsercookieclass 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 scrapyclass 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

关于python如何进行scrapy操作cookie爬取博客涉及browsercookie就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯