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实现dnspod自动更新dns解析的方法
Feb 14 Python
python爬虫实战之最简单的网页爬虫教程
Aug 13 Python
python使用Matplotlib绘制分段函数
Sep 25 Python
python3.6使用pickle序列化class的方法
Oct 22 Python
使用python进行拆分大文件的方法
Dec 10 Python
教你一步步利用python实现贪吃蛇游戏
Jun 27 Python
python实现对图片进行旋转,放缩,裁剪的功能
Aug 07 Python
python实现坦克大战
Apr 24 Python
Python requests上传文件实现步骤
Sep 15 Python
Python绘图实现台风路径可视化代码实例
Oct 23 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
Nov 24 Python
基于Python实现粒子滤波效果
Dec 01 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 session文件独占锁引起阻塞问题解决方法
2015/05/12 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
详解php反序列化
2020/06/10 PHP
PHP 使用位运算实现四则运算的代码
2021/03/09 PHP
jQuery数据缓存功能的实现思路及简单模拟
2013/05/27 Javascript
Javascript动画的实现原理浅析
2015/03/02 Javascript
JavaScript基本语法学习教程
2016/01/14 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
2016/03/03 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
vue.js删除动态绑定的radio的指定项
2017/06/02 Javascript
webpack v4 从dev到prd的方法
2018/04/02 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
jQuery实现获取form表单内容及绑定数据到form表单操作分析
2018/07/03 jQuery
js实现时分秒倒计时
2019/12/03 Javascript
JS Thunk 函数的含义和用法实例总结
2020/04/08 Javascript
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
python和pyqt实现360的CLable控件
2014/02/21 Python
在Python中利用Pandas库处理大数据的简单介绍
2015/04/07 Python
简单介绍Python中用于求最小值的min()方法
2015/05/15 Python
使用Python搭建虚拟环境的配置方法
2018/02/28 Python
Django网络框架之HelloDjango项目创建教程
2019/06/06 Python
Python3 执行系统命令并获取实时回显功能
2019/07/09 Python
python爬虫 线程池创建并获取文件代码实例
2019/09/28 Python
常用python爬虫库介绍与简要说明
2020/01/25 Python
Python CategoricalDtype自定义排序实现原理解析
2020/09/11 Python
CSS3实现王者匹配时的粒子动画效果
2019/04/12 HTML / CSS
阿提哈德航空官方网站:Etihad Airways
2017/01/06 全球购物
凯撒娱乐:Caesars Entertainment
2018/02/23 全球购物
巧克力蛋糕店创业计划书
2014/01/14 职场文书
教师学习培训邀请函
2014/02/04 职场文书
党课知识竞赛主持词
2014/04/01 职场文书
公司董事长岗位职责
2014/06/08 职场文书
高中综合实践活动总结
2014/07/07 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
个人求职意向书
2015/05/11 职场文书