zoukankan      html  css  js  c++  java
  • 潭州课堂25班:Ph201805201 爬虫高级 第五课 sclapy 框架 日志和 settings 配置 模拟登录(课堂笔记)

     

     

    当要对一个页面进行多次请求时,

    设   dont_filter = True   忽略去重

    在 scrapy 框架中模拟登录

    创建项目

    创建运行文件

    设请求头

    # -*- coding: utf-8 -*-
    import scrapy
    import requests
    
    class DoubanSpider(scrapy.Spider):
        name = 'douban'
        # allowed_domains = ['douban.com']
        # 登录页面
        start_urls = ['https://accounts.douban.com/login']
        log_url = 'https://accounts.douban.com/login'
        c_g_url = 'https://www.douban.com/'
        def parse(self, response):
            # 如果出现验证码
            # 验证码
            captcha_url = response.xpath('//img[@id="captcha_image"]/@src').extract_first()
            #  如果没有验证码
            if not captcha_url:
                print('没有验证码')
                data = {
                    'source': 'index_nav',
                    'redir':'https://www.douban.com/people/184159212/',
                    'form_email': '13605938437',
                    'form_password': '17906808lmlmlm',
                    'login':'登录'
                }
            else:
                print('出现验证码')
                captcha_id = response.xpath('//input[@name="captcha-id"]/@value').extract_first()
                # 下载图片验证码
                with open('1.jpg','wb')as f:
                    f.write(requests.get(captcha_url).content)
                captcha_solution = input('>>>>>')
                data = {
                    'source': 'None',
                    'redir':'https://www.douban.com/',
                    'captcha-solution':captcha_solution,
                    'captcha-id':captcha_id,
                    'form_email': '账号',
                    'form_password': '密码',
                    'login':'登录'
                }
    
            # 返回url , 参数 , 回调函数
            yield scrapy.FormRequest(url=self.log_url,formdata=data,callback=self.login_after)
    
        def login_after(self,response):
            # 判断是否登录成功
            text ={
                    'ck': '7nL_',
                    'comment':' 哈哈....哈哈....哈哈....'
                }
            name = response.xpath('//*[@id="db-global-nav"]/div/div[1]/ul/li[2]/a/span[1]//text()').extract()
            if name:
                print('登录成功,当前用户是%s'%name)
                yield scrapy.FormRequest(url=self.c_g_url,formdata=text)
            else:print('登录失败')
    
    
    

      

  • 相关阅读:
    Python | PyQt5编写计时器与倒计时应用程序
    AI文件与PS文件相互导入,并分层可编辑
    maple解方程组
    有限元数值分析
    常用Latex编辑数学公式
    notion
    总结一下ANSYS中不同单元之间选择与连接问题
    参考文献的引用方法
    Abaqus CAE笔记本
    几种大文件传输的平台
  • 原文地址:https://www.cnblogs.com/gdwz922/p/9764203.html
Copyright © 2011-2022 走看看