• python之scrapy的FormRequest模拟POST表单自动登陆


    1、FormRequest表单实现自动登陆

    # -*- coding: utf-8 -*-
    import scrapy
    
    
    import re
    
    class GithubSpider(scrapy.Spider):
        name = 'github'
        allowed_domains = ['github.com']
        start_urls = ['https://github.com/login']
    
        def parse(self, response):
            authenticity_token = response.xpath("//input[@name='authenticity_token']/@value").extract_first()
            utf8 = response.xpath("//input[@name='utf8']/@value").extract_first()
            commit = response.xpath("//input[@name='commit']/@value").extract_first()
            post_data = dict(
                login="812******0@qq.com",
                password="******",
                authenticity_token=authenticity_token,
                utf8=utf8,
                commit=commit,
            )
            #表单请求
            yield scrapy.FormRequest(
                "https://github.com/session",
                formdata=post_data,
                callback=self.after_login
            )
    
        def after_login(self,response):
            # with open("a.html","w",encoding="utf-8") as f:
            #     f.write(response.body.decode())
            print(re.findall("812406210",response.body.decode()))

    2、FormRequest.from_response模拟自动登陆

    # -*- coding: utf-8 -*-
    import scrapy
    import re
    class Github2Spider(scrapy.Spider):
        name = 'github2'
        allowed_domains = ['github.com']
        start_urls = ['https://github.com/login']
    
        def parse(self, response):
            yield scrapy.FormRequest.from_response(
                response, #自动的从response中寻找from表单
                #formdata只需要传入字典型登录名和密码,字典的健是input标签中的name属性
                formdata={"login":"****@qq.com","password":"***********"},
                callback = self.after_login
            )
    
        def after_login(self,response):
            print(re.findall("........",response.body.decode()))

    3、笔记

      a)FormRequest

      

      b) FormRequest.from_response

      

  • 相关阅读:
    揭晓UX(用户体验)最大的秘密
    Js、jquery学习笔记
    网站建设之高速WEB的实现
    网站改版之指标分析
    Nodejs读写流
    Nodejs查找,读写文件
    网站建设之脚本加载
    如何利用CSS3编写一个满屏的布局
    如何设计自己的UI套件
    用requireJS进行模块化的网站开发
  • 原文地址:https://www.cnblogs.com/ywjfx/p/11089248.html
Copyright © 2020-2023  润新知