zoukankan      html  css  js  c++  java
  • Scrapy框架--使用cookie

    CookieMiddleware

    class scrapy.downloadermiddlewares.cookies.CookieMiddlewar

    该中间件使得爬取需要cookie(例如使用session)的网站成为了可能。 其追踪了web server发送的cookie,并在之后的request中发送回去, 就如浏览器所做的那样.

     

    以下设置可以用来配置cookie中间件:

    • COOKIES_ENABLED
    • COOKIES_DEBUG

    单spider多cookie session

    Scrapy通过使用 cookiejar Request meta key来支持单spider追踪多cookie session。 默认情况下其使用一个cookie jar(session),不过您可以传递一个标示符来使用多个。

    注意这个标识符(即下面代码中的'i'),这里并不是说使用的cookie就是‘i’,而是第i个cookie!!'cookiejar'是meta的特殊关键字,不能以单纯的dict来看待。

    cookie是追踪session的,会在request的过程中发生变化,比如在start_requests的时候模拟登陆,cookie就会记录登录信息,后续使用该cookie的request就

    能继续沿用其中的cookie。

    例如:

    for i, url in enumerate(urls):
        yield scrapy.Request("http://www.example.com", meta={'cookiejar': i},
            callback=self.parse_page)

    需要注意的是 cookiejar meta key不是”黏性的(sticky)”。 您需要在之后的request请求中接着传递。

    def parse_page(self, response):
        # do some processing
        return scrapy.Request("http://www.example.com/otherpage",
            meta={'cookiejar': response.meta['cookiejar']},
            callback=self.parse_other_page)

    COOKIES_ENABLED

    默认: True

    是否启用cookiesmiddleware。如果关闭,cookies将不会发送给web server。

    COOKIES_DEBUG

    默认: False

    如果启用,Scrapy将记录所有在request(cookie 请求头)发送的cookies及response接收到的cookies(set-cookie接收头)

    下面是启用COOKIES_DEBUG的记录样例:

    2011-04-06 14:35:10-0300 [scrapy] INFO: Spider opened
    2011-04-06 14:35:10-0300 [scrapy] DEBUG: Sending cookies to: <GET http://www.diningcity.com/netherlands/index.html>
            Cookie: clientlanguage_nl=en_EN
    2011-04-06 14:35:14-0300 [scrapy] DEBUG: Received cookies from: <200 http://www.diningcity.com/netherlands/index.html>
            Set-Cookie: JSESSIONID=B~FA4DC0C496C8762AE4F1A620EAB34F38; Path=/
            Set-Cookie: ip_isocode=US
            Set-Cookie: clientlanguage_nl=en_EN; Expires=Thu, 07-Apr-2011 21:21:34 GMT; Path=/
    2011-04-06 14:49:50-0300 [scrapy] DEBUG: Crawled (200) <GET http://www.diningcity.com/netherlands/index.html> (referer: None)
    [...]

    (翻译加个人理解,若有问题请指正,谢谢)

    官方文档:https://doc.scrapy.org/en/1.3/topics/downloader-middleware.html#module-scrapy.downloadermiddlewares.cookies

  • 相关阅读:
    DRF之url注册器组件
    序列化组件的使用及接口设计和优化
    Django 内置字段
    Django 的 ModelForm组件
    Django组件 中间件
    csrf
    django使用redis做缓存
    微信消息推送
    自定制serilazry字段
    小知识,大智慧(restframework 拾忆)
  • 原文地址:https://www.cnblogs.com/thunderLL/p/6551667.html
Copyright © 2011-2022 走看看