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使用正则表达式提取网页URL的方法
May 26 Python
Python在Console下显示文本进度条的方法
Feb 14 Python
基于python yield机制的异步操作同步化编程模型
Mar 18 Python
python Celery定时任务的示例
Mar 13 Python
python 批量修改/替换数据的实例
Jul 25 Python
Python3 Tkinter选择路径功能的实现方法
Jun 14 Python
python动态视频下载器的实现方法
Sep 16 Python
Pytorch实现各种2d卷积示例
Dec 30 Python
Python面向对象之继承原理与用法案例分析
Dec 31 Python
python mysql 字段与关键字冲突的解决方式
Mar 02 Python
python实现录制全屏和选择区域录屏功能
Feb 05 Python
总结Python使用过程中的bug
Jun 18 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编程最快明白》第八讲:php启发和小结
2010/11/01 PHP
PHP生成不同颜色、不同大小的tag标签函数
2013/09/23 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
2014/02/13 PHP
session 加入redis的实现代码
2016/07/15 PHP
PHP后期静态绑定之self::限制实例分析
2018/12/21 PHP
Laravel实现ORM带条件搜索分页
2019/10/24 PHP
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
javaScript 判断字符串是否为数字的简单方法
2009/07/25 Javascript
jQuery get和post 方法传值注意事项
2009/11/03 Javascript
javascript 原型链维护和继承详解
2014/11/26 Javascript
JavaScript制作windows经典扫雷小游戏
2015/03/31 Javascript
javascript基于prototype实现类似OOP继承的方法
2015/12/16 Javascript
详解JavaScript表单验证(E-mail 验证)
2016/03/31 Javascript
Javascript之Date对象详解
2016/06/07 Javascript
微信小程序 九宫格实例代码
2017/01/21 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
微信小程序websocket实现即时聊天功能
2019/05/21 Javascript
vue的keep-alive用法技巧
2019/08/15 Javascript
vue+layui实现select动态加载后台数据的例子
2019/09/20 Javascript
微信小程序实现带放大效果的轮播图
2020/05/26 Javascript
Flask框架的学习指南之制作简单blog系统
2016/11/20 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
2017/03/19 Python
Python中%是什么意思?python中百分号如何使用?
2018/03/20 Python
基于DataFrame改变列类型的方法
2018/07/25 Python
python解析xml简单示例
2019/06/21 Python
python调用并链接MATLAB脚本详解
2019/07/05 Python
查看Python依赖包及其版本号信息的方法
2019/08/13 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
2020/11/10 Python
CSS3动画animation实现云彩向左滚动
2014/05/09 HTML / CSS
Manuka Doctor美国官网:麦卢卡蜂蜜和蜂毒护肤
2016/12/25 全球购物
英国比较机场停车场网站:Airport Parking Essentials
2019/12/01 全球购物
日本最大的彩色隐形眼镜销售网站:CharmColor
2020/09/09 全球购物
党的群众路线对照检查材料思想汇报(学校)
2014/10/04 职场文书
2015年秘书个人工作总结
2015/04/25 职场文书
社团招新宣传语
2015/07/13 职场文书
MySQL普通表如何转换成分区表
2022/05/30 MySQL