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网络编程学习笔记(二):socket建立网络客户端
Jun 09 Python
使用Python构建Hopfield网络的教程
Apr 14 Python
利用Python中的mock库对Python代码进行模拟测试
Apr 16 Python
python中的set实现不重复的排序原理
Jan 24 Python
解决python中使用plot画图,图不显示的问题
Jul 04 Python
python读取excel指定列数据并写入到新的excel方法
Jul 10 Python
python实现周期方波信号频谱图
Jul 21 Python
python TK库简单应用(实时显示子进程输出)
Oct 29 Python
pyinstaller还原python代码过程图解
Jan 08 Python
使用python-pptx包批量修改ppt格式的实现
Feb 14 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
Mar 09 Python
如何在windows下安装配置python工具Ulipad
Oct 27 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下对字符串的递增运算代码
2010/08/21 PHP
Drupal7中常用的数据库操作实例
2014/03/02 PHP
php使用Image Magick将PDF文件转换为JPG文件的方法
2015/04/01 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
2015/05/12 PHP
Function.prototype.call.apply结合用法分析示例
2013/07/03 Javascript
自己写的Javascript计算时间差函数
2013/10/28 Javascript
JS控制输入框内字符串长度
2014/05/21 Javascript
详解JavaScript基本类型和引用类型
2015/12/09 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析
2016/06/08 Javascript
获取jqGrid中选择的行的数据
2016/11/30 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
Vue-CLI3.x 设置反向代理的方法
2018/12/06 Javascript
详解小程序BackgroundAudioManager踩坑之旅
2019/12/08 Javascript
JS实现点餐自动选择框(案例分析)
2019/12/10 Javascript
vue列表数据发生变化指令没有更新问题及解决方法
2020/01/16 Javascript
Vue检测屏幕变化来改变不同的charts样式实例
2020/10/26 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
python 处理telnet返回的More,以及get想要的那个参数方法
2019/02/14 Python
django 消息框架 message使用详解
2019/07/22 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
python实现人像动漫化的示例代码
2020/05/17 Python
详解基于Scrapy的IP代理池搭建
2020/09/29 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
2020/10/30 Python
Yves Rocher伊夫·黎雪美国官网:法国始创植物美肌1959
2019/01/09 全球购物
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
金融专业个人求职信范文
2013/11/28 职场文书
历史教育专业个人求职信
2013/12/13 职场文书
大学生个人简历中的自我评价
2013/12/27 职场文书
学习走群众路线心得体会
2014/11/05 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书
电力安全学习心得体会
2016/01/18 职场文书
《确定位置》教学反思
2016/02/18 职场文书
教你部署vue项目到docker
2022/04/05 Vue.js