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爬虫入门教程--正则表达式完全指南(五)
May 25 Python
基于python神经卷积网络的人脸识别
May 24 Python
在dataframe两列日期相减并且得到具体的月数实例
Jul 03 Python
Python创建一个空的dataframe,并循环赋值的方法
Nov 08 Python
python调用外部程序的实操步骤
Mar 04 Python
pyqt5利用pyqtDesigner实现登录界面
Mar 28 Python
python使用正则表达式(Regular Expression)方法超详细
Dec 30 Python
python标准库os库的函数介绍
Feb 12 Python
Python利用逻辑回归分类实现模板
Feb 15 Python
Python函数生成器原理及使用详解
Mar 12 Python
python math模块的基本使用教程
Jan 16 Python
python中validators库的使用方法详解
Sep 23 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
PHP中执行MYSQL事务解决数据写入不完整等情况
2014/01/07 PHP
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
2014/05/04 PHP
php中静态类与静态变量用法的区别分析
2015/01/15 PHP
php判断输入是否是纯数字,英文,汉字的方法
2015/03/05 PHP
php猴子选大王问题解决方法
2015/05/12 PHP
PHP基于递归算法解决兔子生兔子问题
2018/05/11 PHP
PHP实现常用排序算法的方法
2020/02/05 PHP
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
2013/04/28 Javascript
jQuery实现数字加减效果汇总
2014/12/16 Javascript
jquery图片切换插件
2015/03/16 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
2015/09/22 Javascript
js过滤HTML标签完整实例
2015/11/26 Javascript
headjs实现网站并行加载但顺序执行JS
2016/11/29 Javascript
原生JS实现旋转轮播图+文字内容切换效果【附源码】
2018/09/29 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
2019/09/17 Javascript
vue通过过滤器实现数据格式化
2020/07/20 Javascript
vue+elementui通用弹窗的实现(新增+编辑)
2021/01/07 Vue.js
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
跟老齐学Python之有容乃大的list(1)
2014/09/14 Python
python使用htmllib分析网页内容的方法
2015/05/08 Python
详解Python中break语句的用法
2015/05/14 Python
在Python程序中操作文件之flush()方法的使用教程
2015/05/24 Python
Python实现base64编码的图片保存到本地功能示例
2018/06/22 Python
在Python中使用Neo4j的方法
2019/03/14 Python
Python实现的矩阵转置与矩阵相乘运算示例
2019/03/26 Python
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
跑步爱好者一站式服务网站:Jack Rabbit
2016/09/01 全球购物
Emma Bridgewater官网:英国餐具制造商
2019/11/24 全球购物
大学自主招生自荐信
2013/12/16 职场文书
党员自我批评与反省材料
2014/02/10 职场文书
募捐倡议书怎么写
2014/05/14 职场文书
官僚主义现象查摆问题整改措施
2014/10/04 职场文书
当幸福来敲门观后感
2015/06/01 职场文书
2015年国庆晚会主持词
2015/07/01 职场文书
SQL写法--行行比较
2021/08/23 SQL Server
SQL中的连接查询详解
2022/06/21 SQL Server