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)

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

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

获取了 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实战scrapy操作cookie爬取博客涉及browsercookie

使用 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

来源:https://blog.csdn.net/hihell/article/details/121281368

标签:scrapy,cookie,browsercookie,爬取博客
0
投稿

猜你喜欢

  • EXECUTE IMMEDIATE用法小结

    2009-09-26 18:32:00
  • PDO::_construct讲解

    2023-06-06 03:22:31
  • mysql 存储过程 使用小结

    2010-10-25 20:02:00
  • 关于Python 常用获取元素 Driver 总结

    2022-12-24 05:03:28
  • 解决pycharm的Python console不能调试当前程序的问题

    2021-09-08 12:02:42
  • python正则表达式re之compile函数解析

    2022-12-03 04:24:02
  • python 离散点图画法的实现

    2021-04-14 17:00:31
  • php filter协议使用方法

    2023-05-29 19:36:40
  • Python实例一个类背后发生了什么

    2023-05-19 05:44:18
  • python抽取指定url页面的title方法

    2022-11-15 21:52:40
  • python3爬取各类天气信息

    2022-01-18 06:09:35
  • XPath详解,总结

    2009-04-17 14:09:00
  • python入门:argparse浅析 nargs='+'作用

    2023-06-26 15:52:58
  • Python当中的array数组对象实例详解

    2022-02-12 23:22:47
  • Python format字符串格式化函数的使用

    2023-12-20 12:45:59
  • Python Django教程之模型中字段验证详解

    2021-01-04 18:56:48
  • 解决python matplotlib imshow无法显示的问题

    2023-07-19 23:59:25
  • Python装饰器与线程结合提高接口访问效率方法

    2021-07-16 11:28:32
  • python中的subprocess.Popen()使用详解

    2023-08-01 18:55:23
  • 用ASP打开远端MDB数据库

    2007-10-13 06:56:00
  • asp之家 网络编程 m.aspxhome.com