zoukankan      html  css  js  c++  java
  • scrapy模拟登录

    对于scrapy来说,也是有两个方法模拟登陆:

    1. 直接携带cookie
    2. 找到发送post请求的url地址,带上信息,发送请求

    scrapy模拟登陆之携带cookie

    应用场景:

    1. cookie过期时间很长,常见于一些不规范的网站
    2. 能在cookie过期之前把搜有的数据数据拿到
    3. 配合其他程序使用,比如其使用selenium把登陆之后的cookie获取到保存到本地,scrapy发送请求之前先读取本地cookie
    class RenrensipderSpider(scrapy.Spider):
        name = 'renrenspider'
        allowed_domains = ['renren.com']
        cookies = dict(  # 自己定义cookies,字典形式
            anonymid = 'j3jxk555-nrn0wh',
            ...
            wp_fold = 0
        )
        
        def start_requests(self):  # 重写start_request函数,指定start_urls的处理方式
            start_urls = 'http://www.renre.com/'
            yield scrapy.Request(start_urls,callback=self.parse, cookies=self.cookies)  # 指定callback函数,同时携带cookie
            
        def parse(self, response):
            ...
    

    那么问题来了:如何知道我的cookie确定是在不同的解析函数中传递呢?

    # Disable cookie(enaled by default)
    # COOKIES_ENABLED = False  # cookie在setting中默认是开启的
    COOKIES_DEBUG = True  # 在settings中添加该参数即可
    # cookie能够在不同的解析函数中传递,前提也是COOKIES_ENABLED为True
    
    终端效果入下:
    [scrapy.downloadermiddlewares.cookies] DEBUG: Sending cookies to:
    <GET http://zhibo.renren.com/top>
    Cookie: anonymid=j3...
    
  • 相关阅读:
    Android 工程师进阶 34 讲
    300分钟搞定数据结构与算法
    即学即用的Spark实战44讲
    42讲轻松通关 Flink
    Webpack原理与实践
    大数据运维实战
    ZooKeeper源码分析与实战
    前端高手进阶
    重学数据结构与算法
    ElementUI中el-upload怎样上传文件并且传递额外参数给Springboot后台进行接收
  • 原文地址:https://www.cnblogs.com/colden/p/9859157.html
Copyright © 2011-2022 走看看