python scrapy简单模拟登录的代码分析


Posted in Python onJuly 21, 2021

1、requests模块。直接携带cookies请求页面。

找到url,发送post请求存储cookie。

2、selenium(浏览器自动处理cookie)。

找到相应的input标签,输入文本,点击登录。

3、scrapy直接带cookies。

找到url,发送post请求存储cookie。

# -*- coding: utf-8 -*-
import scrapy
import re
 
class GithubLoginSpider(scrapy.Spider):
    name = 'github_login'
    allowed_domains = ['github.com']
    start_urls = ['https://github.com/login']
 
    def parse(self, response): # 发送Post请求获取Cookies
        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()
        form_data = {
            'login': 'pengjunlee@163.com',
            'password': '123456',
            'webauthn-support': 'supported',
            'authenticity_token': authenticity_token,
            'utf8': utf8,
            'commit': commit}
        yield scrapy.FormRequest("https://github.com/session", formdata=form_data, callback=self.after_login)
 
    def after_login(self, response): # 验证是否请求成功
        print(re.findall('Learn Git and GitHub without any code!', response.body.decode()))

知识点扩展:

parse_login方法是提交完表单后callback回调函数指定要执行的方法,为了验证是否成功。这里我们直接在response中搜索Welcome Liu这个字眼就证明登录成功。

这个好理解,重点是yield from super().start_resquests(),这个代表着如果一旦登录成功后,就直接带着登录成功后Cookie值,方法start_urls里面的地址。

这样的话登录成功后的response可以直接在parse里面写。

# -*- coding: utf-8 -*-
import scrapy
from scrapy import FormRequest,Request


class ExampleLoginSpider(scrapy.Spider):
    name = "login_"
    allowed_domains = ["example.webscraping.com"]
    start_urls = ['http://example.webscraping.com/user/profile']
    login_url = 'http://example.webscraping.com/places/default/user/login'

    def parse(self, response):
        print(response.text)

    def start_requests(self):
        yield scrapy.Request(self.login_url,callback=self.login)

    def login(self,response):
        formdata = {
            'email':'liushuo@webscraping.com','password':'12345678'}
        yield FormRequest.from_response(response,formdata=formdata,
                                        callback=self.parse_login)
    def parse_login(self,response):
        # print('>>>>>>>>'+response.text)
        if 'Welcome Liu' in response.text:
            yield from super().start_requests()

到此这篇关于python scrapy简单模拟登录的代码分析的文章就介绍到这了,更多相关python scrapy模拟登录的方法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中while循环语句用法简单实例
May 07 Python
python中zip和unzip数据的方法
May 27 Python
Python 递归函数详解及实例
Dec 27 Python
Python文本统计功能之西游记用字统计操作示例
May 07 Python
python爬虫之线程池和进程池功能与用法详解
Aug 02 Python
使用PyQt4 设置TextEdit背景的方法
Jun 14 Python
python实现串口自动触发工作的示例
Jul 02 Python
python根据多个文件名批量查找文件
Aug 13 Python
Python3查找列表中重复元素的个数的3种方法详解
Feb 13 Python
Python列表倒序输出及其效率详解
Mar 04 Python
Python 整行读取文本方法并去掉readlines换行\n操作
Sep 03 Python
Python实现GIF动图以及视频卡通化详解
Dec 06 Python
python异步的ASGI与Fast Api实现
Jul 16 #Python
Python实现PIL图像处理库绘制国际象棋棋盘
Flask使用SQLAlchemy实现持久化数据
Jul 16 #Python
Python多个MP4合成视频的实现方法
Jul 16 #Python
Python如何解决secure_filename对中文不支持问题
利用Matlab绘制各类特殊图形的实例代码
Flask response响应的具体使用
You might like
Drupal7中常用的数据库操作实例
2014/03/02 PHP
PHP函数eval()介绍和使用示例
2014/08/20 PHP
dojo随手记 gird组件引用
2011/02/24 Javascript
JQuery中extend的用法实例分析
2015/02/08 Javascript
jQuery调用Webservice传递json数组的方法
2016/08/06 Javascript
js放大镜放大购物图片效果
2017/01/18 Javascript
详解VueJS应用中管理用户权限
2018/02/02 Javascript
详解JS浏览器事件循环机制
2019/03/27 Javascript
JavaScript 如何计算文本的行数的实现
2020/09/14 Javascript
原生JS生成指定位数的验证码
2020/10/28 Javascript
[01:14]英雄,所敬略同——2018完美盛典宣传视频4K
2018/12/05 DOTA
Python获取网页上图片下载地址的方法
2015/03/11 Python
python脚本替换指定行实现步骤
2017/07/11 Python
Python数据结构与算法之二叉树结构定义与遍历方法详解
2017/12/12 Python
对Python中gensim库word2vec的使用详解
2018/05/08 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
使用CodeMirror实现Python3在线编辑器的示例代码
2019/01/14 Python
使用Python计算玩彩票赢钱概率
2019/06/26 Python
python下PyGame的下载与安装过程及遇到问题
2019/08/04 Python
Django实现文件上传下载
2019/10/06 Python
简单了解如何封装自己的Python包
2020/07/08 Python
python全栈开发语法总结
2020/11/22 Python
电焊工工作岗位职责
2014/02/06 职场文书
测绘专业大学生职业生涯规划书
2014/02/10 职场文书
预备党员入党自我评价范文
2014/03/10 职场文书
党员廉洁自律承诺书
2014/05/26 职场文书
2014年语文教研组工作总结
2014/12/06 职场文书
幼儿园小班个人总结
2015/02/12 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
2015秋季新学期开学寄语
2015/05/28 职场文书
信用卡工资证明范本
2015/06/19 职场文书
2016应届毕业生实习心得体会
2015/10/09 职场文书
小学生班干部竞选稿
2015/11/20 职场文书
一波干货,会议主持词开场白范文
2019/05/06 职场文书
导游词之昭君岛
2020/01/17 职场文书
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android