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 相关文章推荐
TensorFlow利用saver保存和提取参数的实例
Jul 26 Python
python 3.6.2 安装配置方法图文教程
Sep 18 Python
Python爬虫将爬取的图片写入world文档的方法
Nov 07 Python
对python列表里的字典元素去重方法详解
Jan 21 Python
python读取csv和txt数据转换成向量的实例
Feb 12 Python
Python Pandas实现数据分组求平均值并填充nan的示例
Jul 04 Python
django删除表重建的实现方法
Aug 28 Python
Python While循环语句实例演示及原理解析
Jan 03 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
Feb 12 Python
基于python实现简单网页服务器代码实例
Sep 14 Python
Python类型转换的魔术方法详解
Dec 23 Python
python 逆向爬虫正确调用 JAR 加密逻辑
Jan 12 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
PHP 编写大型网站问题集
2010/05/07 PHP
php curl的深入解析
2013/06/02 PHP
discuz目录文件资料汇总
2014/12/30 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
基于jquery的多功能软键盘插件
2012/07/25 Javascript
For循环中分号隔开的3部分的执行顺序探讨
2014/05/27 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
JS非空验证及邮箱验证的实例
2017/08/11 Javascript
详解vue mixins和extends的巧妙用法
2017/12/20 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
2017/12/25 Javascript
jQuery插件Validation表单验证详解
2018/05/26 jQuery
JS实现可针对算术表达式求值的计算器功能示例
2018/09/04 Javascript
vue-cli项目修改文件热重载失效的解决方法
2018/09/19 Javascript
vue实现父子组件之间的通信以及兄弟组件的通信功能示例
2019/01/29 Javascript
vue监听浏览器原生返回按钮,进行路由转跳操作
2020/09/09 Javascript
python连接sql server乱码的解决方法
2013/01/28 Python
Python中用于返回绝对值的abs()方法
2015/05/14 Python
利用Python查看目录中的文件示例详解
2017/08/28 Python
python 中字典嵌套列表的方法
2018/07/03 Python
python 实现GUI(图形用户界面)编程详解
2019/07/17 Python
使用Matplotlib 绘制精美的数学图形例子
2019/12/13 Python
Tensorflow累加的实现案例
2020/02/05 Python
浅谈Python中的生成器和迭代器
2020/06/19 Python
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
2014/11/05 HTML / CSS
css3实现平移效果(transfrom:translate)的示例
2020/11/13 HTML / CSS
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
美国购物网站:Clickhere2shop
2021/01/28 全球购物
C#面试题问题集
2016/04/02 面试题
毕业生的自我鉴定该怎么写
2013/12/02 职场文书
经典大学生求职信范文
2014/01/06 职场文书
居委会四风问题个人对照检查材料
2014/09/25 职场文书
六一领导慰问欢迎词
2015/01/26 职场文书
安全保证书怎么写
2015/02/28 职场文书
超市采购员岗位职责
2015/04/07 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书
利用Python多线程实现图片下载器
2022/03/25 Python