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'})