ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 网络编程 >> Python教程 >> Scrapy框架--cookie的获取/传递/本地保存

Scrapy框架--cookie的获取/传递/本地保存(1/2)

来源:网络整理     时间:2017-12-06     关键词:

本篇文章主要介绍了" Scrapy框架--cookie的获取/传递/本地保存",主要涉及到方面的内容,对于Python教程感兴趣的同学可以参考一下: 环境:Python3.6 + Scrapy1.4 我要实现的东西:1. 完成模拟登陆 ????????2. 登陆成功后提取出cookie,然后保存到本地cook...

环境:Python3.6 + Scrapy1.4
我要实现的东西:1. 完成模拟登陆
????????2. 登陆成功后提取出cookie,然后保存到本地cookie.txt文件中
????????3. 再次使用时从本地的cookie.txt中读取cookie,省略模拟登陆.
看了一些关于Scrapy操作cookie的博客,写的大同小异(都不好使...).我总结一下我尝试出来的关于cookie的提取和传递的操作,亲测可用

Cookie的传递和提取

from scrapy.http.cookies import CookieJar    # 该模块继承自内置的http.cookiejar,操作类似# 实例化一个cookiejar对象
cookie_jar = CookieJar()

# 首先是cookie的提取class MySpider(scrapy.Spider):
    ....
    ....
    # 模拟登陆,之后调用一个检查是否登录成功的函数def login(self, response):
        ....
        return [scrapy.FormRequest(
            url=login_url,
            formdata = {'username':xxx, 'password':xxx},
            callback =self.check_login
        )]

def check_login(self, response):
    if 登录成功:
        # 到这里我们的登录状态已经写入到response header中的'Set-Cookies'中了,# 使用extract_cookies方法可以提取response中的cookie
        cookiejar.extract_cookies(response, response.request)
        # cookiejar是类字典类型的,将它写入到文件中withopen('cookies.txt', 'w') as f:
            for cookie in cookie_jar:
                f.write(str(cookie) +'\n')

# 有些情况可能在发起登录之前会有一些请求,会陆续的产生一些cookie,可以在第一次请求的时候将cookiejar写入到request的meta中进行传递
scrapy.Request(url, callback=self.xxx, meta={'cookiejar': cookiejar})
# 之后每次需要传递这个cookiejar对象可以从response.meta中拿到
scrapy.Request(url, callback=self.xxx, meta={'cookiejar': response.meta['cookiejar']})

上一篇感知机预测NBA总冠军 下一篇python 进程

相关图片

相关文章