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 相关文章推荐
python3 与python2 异常处理的区别与联系
Jun 19 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
Jun 11 Python
[原创]Python入门教程4. 元组基本操作
Oct 31 Python
Python3简单爬虫抓取网页图片代码实例
Aug 26 Python
python实现小世界网络生成
Nov 21 Python
基于Python获取照片的GPS位置信息
Jan 20 Python
使用PyCharm安装pytest及requests的问题
Jul 31 Python
python 贪心算法的实现
Sep 18 Python
python利用appium实现手机APP自动化的示例
Jan 26 Python
【超详细】八大排序算法的各项比较以及各自特点
Mar 31 Python
详解Python中*args和**kwargs的使用
Apr 07 Python
Python中的协程(Coroutine)操作模块(greenlet、gevent)
May 30 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内核介绍及扩展开发指南―基础知识
2011/09/11 PHP
php创建sprite
2014/02/11 PHP
PHP用反撇号执行外部命令
2015/04/14 PHP
谈谈php对接芝麻信用踩的坑
2016/12/01 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
php对mongodb的扩展(小试牛刀)
2012/11/11 Javascript
JS上传图片前实现图片预览效果的方法
2015/03/02 Javascript
详解Element 指令clickoutside源码分析
2019/02/15 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
Angular Excel 导入与导出的实现代码
2019/04/17 Javascript
微信小程序实现的一键连接wifi功能示例
2019/04/24 Javascript
Vue-Cli 3.0 中配置高德地图的两种方式
2019/06/19 Javascript
JS+CSS实现随机点名(实例代码)
2019/11/04 Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
2020/07/30 Javascript
详解Java中String JSONObject JSONArray List转换
2020/11/13 Javascript
[03:04]DOTA2超级联赛专访ZSMJ “莫名其妙”的逆袭
2013/05/23 DOTA
Python完全新手教程
2007/02/08 Python
介绍Python中内置的itertools模块
2015/04/29 Python
解决python2.7用pip安装包时出现错误的问题
2017/01/23 Python
python的依赖管理的实现
2019/05/14 Python
Python.append()与Python.expand()用法详解
2019/12/18 Python
三个python爬虫项目实例代码
2019/12/28 Python
python文件处理fileinput使用方法详解
2020/01/02 Python
Python IDLE或shell中切换路径的操作
2020/03/09 Python
Django使用rest_framework写出API
2020/05/21 Python
Python使用windows设置定时执行脚本
2020/11/12 Python
美体小铺印度官网:The Body Shop印度
2019/10/17 全球购物
以思科路由器为例你写下单臂路由的配置命令
2013/08/03 面试题
移风易俗倡议书
2014/04/15 职场文书
4S店销售内勤岗位职责
2015/04/13 职场文书
个人承诺书格式范文
2015/04/29 职场文书
国博复兴之路观后感
2015/06/02 职场文书
从事会计工作年限证明
2015/06/23 职场文书
mysql查询结果实现多列拼接查询
2022/04/03 MySQL
MySQL批量更新不同表中的数据
2022/05/11 MySQL
python playwrigh框架入门安装使用
2022/07/23 Python