python实战scrapy操作cookie爬取博客涉及browsercookie

 更新时间:2021年11月13日 16:40:56   作者:梦想橡皮擦  
这篇文章主要为大家介绍了python实战scrapy操作cookie爬取博客涉及browsercookie,下面来学习一下 scrapy 操作 Cookie来爬取博客吧

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)

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

Python 爬虫 cookie 实战博客,涉及 browsercookie 与 scrapy

获取了 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)

可以直接获取到后台菜单。

Python 爬虫 cookie 实战博客,涉及 browsercookie 与 scrapy

使用 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 爬虫 cookie 实战博客,涉及 browsercookie 与 scrapy

以上就是python实战scrapy操作cookie爬取博客涉及browsercookie的详细内容,更多关于scrapy操作cookie爬取博客的资料请关注脚本之家其它相关文章!

相关文章

  • Python3访问并下载网页内容的方法

    Python3访问并下载网页内容的方法

    这篇文章主要介绍了Python3访问并下载网页内容的方法,实例分析了Python页面抓取及写入文件的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • python logging模块的使用总结

    python logging模块的使用总结

    这篇文章主要介绍了python logging模块使用总结以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。,需要的朋友可以参考下
    2019-07-07
  • 一篇文章弄懂Python中的内建函数

    一篇文章弄懂Python中的内建函数

    Python学习,内建函数是你必须要掌握的一部分,下面这篇文章主要给大家介绍了关于Python中内建函数的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2021-08-08
  • python MNIST手写识别数据调用API的方法

    python MNIST手写识别数据调用API的方法

    这篇文章主要介绍了python MNIST手写识别数据调用API的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • Python 异步如何使用等待有时间限制协程

    Python 异步如何使用等待有时间限制协程

    这篇文章主要为大家介绍了Python 异步如何使用等待有时间限制协程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • python中exec函数的实现

    python中exec函数的实现

    exec()是Python内置的一个函数,用于在运行时执行动态生成的Python代码,下面就来介绍一下python中exec函数的实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • PyQt5中QTimer定时器的实例代码

    PyQt5中QTimer定时器的实例代码

    如果需要在程序中周期性地进行某项操作,比如检测某种设备的状态,就会用到定时器,本文主要介绍了PyQt5中QTimer定时器的实例代码,感兴趣的可以了解一下
    2021-06-06
  • python实现微信远程控制电脑

    python实现微信远程控制电脑

    这篇文章主要为大家详细介绍了python实现微信远程控制电脑的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • 深入了解python全局变量,局部变量和命名空间

    深入了解python全局变量,局部变量和命名空间

    这篇文章主要为大家介绍了python全局变量,局部变量和命名空间,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • python检查字符串是否是正确ISBN的方法

    python检查字符串是否是正确ISBN的方法

    这篇文章主要介绍了python检查字符串是否是正确ISBN的方法,涉及Python针对字符串的相关操作技巧,需要的朋友可以参考下
    2015-07-07

最新评论