Scrapy框架实现的登录网站操作示例


Posted in Python onFebruary 06, 2020

本文实例讲述了Scrapy框架实现的登录网站操作。分享给大家供大家参考,具体如下:

一、使用cookies登录网站

import scrapy
class LoginSpider(scrapy.Spider):
  name = 'login'
  allowed_domains = ['xxx.com']
  start_urls = ['https://www.xxx.com/xx/']
  cookies = ""
  def start_requests(self):
    for url in self.start_urls:
      yield scrapy.Request(url, cookies=self.cookies, callback=self.parse)
  def parse(self, response):
    with open("01login.html", "wb") as f:
      f.write(response.body)

二、发送post请求登录, 要手动解析网页获取登录参数

import scrapy
class LoginSpider(scrapy.Spider):
  name='login_code'
  allowed_domains = ['xxx.com']
  #1. 登录页面
  start_urls = ['https://www.xxx.com/login/']
  def parse(self, response):
    #2. 代码登录
    login_url='https://www.xxx.com/login'
    formdata={
      "username":"xxx",
      "pwd":"xxx",
      "formhash":response.xpath("//input[@id='formhash']/@value").extract_first(),
      "backurl":response.xpath("//input[@id='backurl']/@value").extract_first()
    }
    #3. 发送登录请求post
    yield scrapy.FormRequest(login_url, formdata=formdata, callback=self.parse_login)
  def parse_login(self, response):
    #4.访问目标页面
    member_url="https://www.xxx.com/member"
    yield scrapy.Request(member_url, callback=self.parse_member)
  def parse_member(self, response):
    with open("02login.html",'wb') as f:
      f.write(response.body)

三、发送post请求登录, 自动解析网页获取登录参数

import scrapy
class LoginSpider(scrapy.Spider):
  name='login_code2'
  allowed_domains = ['xxx.com']
  #1. 登录页面
  start_urls = ['https://www.xxx.com/login/']
  def parse(self, response):
    #2. 代码登录
    login_url='https://www.xxx.com/login'
    formdata={
      "username":"xxx",
      "pwd":"xxx"
    }
    #3. 发送登录请求post
    yield scrapy.FormRequest.from_response(
      response,
      formxpath="//*[@id='login_pc']",
      formdata=formdata,
      method="POST", #覆盖之前的get请求
      callback=self.parse_login
    )
  def parse_login(self, response):
    #4.访问目标页面
    member_url="https://www.xxx.com/member"
    yield scrapy.Request(member_url, callback=self.parse_member)
  def parse_member(self, response):
    with open("03login.html",'wb') as f:
      f.write(response.body)

更多相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家基于Scrapy框架的Python程序设计有所帮助。

Python 相关文章推荐
python中nan与inf转为特定数字方法示例
May 11 Python
python调用摄像头显示图像的实例
Aug 03 Python
Pandas分组与排序的实现
Jul 23 Python
基于python的列表list和集合set操作
Nov 24 Python
Python3如何对urllib和urllib2进行重构
Nov 25 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
Feb 28 Python
python获取linux系统信息的三种方法
Oct 14 Python
Python 多进程、多线程效率对比
Nov 19 Python
python爬取天气数据的实例详解
Nov 20 Python
Django2.1.7 查询数据返回json格式的实现
Dec 29 Python
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
Jun 11 Python
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
Apr 24 Python
Tensorflow 多线程设置方式
Feb 06 #Python
Scrapy框架基本命令与settings.py设置
Feb 06 #Python
python opencv圆、椭圆与任意多边形的绘制实例详解
Feb 06 #Python
Python输出指定字符串的方法
Feb 06 #Python
python实现简单飞行棋
Feb 06 #Python
python实现飞行棋游戏
Feb 05 #Python
以SQLite和PySqlite为例来学习Python DB API
Feb 05 #Python
You might like
PHP4实际应用经验篇(2)
2006/10/09 PHP
防止本地用户用fsockopen DDOS攻击对策
2011/11/02 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
destoon出现验证码不显示时的紧急处理方法
2014/08/22 PHP
apache php mysql开发环境安装教程
2016/07/28 PHP
php实现留言板功能(会话控制)
2017/05/23 PHP
laravel按天、按小时,查询数据的实例
2019/10/09 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
Javascript中Eval函数的使用说明
2008/10/11 Javascript
JavaScript 事件的一些重要说明
2009/10/25 Javascript
javascript中将Object转换为String函数代码 (json str)
2012/04/29 Javascript
按下Enter焦点移至下一个控件的实现js代码
2013/12/11 Javascript
jquery实现弹出层登录和全屏层注册特效
2015/08/28 Javascript
jquery模拟实现鼠标指针停止运动事件
2016/01/12 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
js倒计时显示实例
2016/12/11 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
canvas知识总结
2017/01/25 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
详解Nuxt.js部署及踩过的坑
2018/08/07 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
[03:49]辉夜杯现场龙骑士COSER秀情商“我喜欢芬队!”
2015/12/27 DOTA
Python类的用法实例浅析
2015/05/27 Python
对Python Class之间函数的调用关系详解
2019/01/23 Python
利用Python代码实现一键抠背景功能
2019/12/29 Python
柒牌官方商城:中国男装优秀品牌
2017/06/30 全球购物
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
大专学生推荐信范文
2013/11/19 职场文书
初中班主任寄语
2014/04/04 职场文书
2015年保安个人工作总结
2015/04/02 职场文书
解除处分决定书
2015/06/25 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
离婚财产分割协议书
2015/08/11 职场文书
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
2022/09/23 Servers