Scrapy爬虫使用browsercookie登入

browsercookie模块是一个从浏览器提取保存的cookies的工具。它是一个很有用的爬虫工具,通过加载你浏览器的cookies到一个cookiejar对象里面,让你轻松下载需要登录的网页内容。

安装

pip install browsercookie

import browsercookie

如何运行时报错:ModuleNotFoundError: No module named ‘Crypto.Util.strxor’

只要pip install pycryptodome就可以了

在Scrapy框架中,已有内置的CookiesMiddleware用于处理请求中的cookies,通过继承CookiesMiddleware,导入browsercookie库,从而附带浏览器中的cookies。

import browsercookie
from scrapy.downloadermiddlewares.cookies import CookiesMiddleware

class BrowserCookiesDownloaderMiddleware(CookiesMiddleware):
    """
    创建一个DownloaderMiddleware调用browsercookie获取浏览器cookies
    继承自scrapy内置的CookiesMiddleware
    在settings中禁用CookiesMiddleware,启用自定义的DownloaderMiddleware
    在发送Request时,加入参数 meta={'cookiejar':COOKIEJAR}
    """
    def __init__(self, debug=False):
        super().__init__(debug)
        self.load_browser_cookies()

    def load_browser_cookies(self):
        jar = self.jars['chrome']
        chrome_cookies = browsercookie.chrome()
        for cookie in chrome_cookies:
            jar.set_cookie(cookie)

在settings中禁用内置的CookiesMiddleware,启用自定义的DownloaderMiddleware。

DOWNLOADER_MIDDLEWARES = {
	'xxx.middlewares.BrowserCookiesDownloaderMiddleware':910,
        'scrapy.downloadermiddlewares.cookies.CookiesMiddleware':None,
}

COOKIES_ENABLED = True

构造Request对象时,需加上cookiejar对象,这里用chrome浏览器,记得先浏览器登入网站

scrapy.Request(url, meta={'cookiejar':'chrome'})

    原文作者:晚来天御雪
    原文地址: https://zhuanlan.zhihu.com/p/64366444
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞