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基础教程之对象和类的实际运用
Aug 29 Python
python实现的用于搜索文件并进行内容替换的类实例
Jun 28 Python
使用Python的Scrapy框架十分钟爬取美女图
Dec 26 Python
python爬虫入门教程--快速理解HTTP协议(一)
May 25 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
Oct 21 Python
用python脚本24小时刷浏览器的访问量方法
Dec 07 Python
CentOS7下安装python3.6.8的教程详解
Jan 03 Python
python通过移动端访问查看电脑界面
Jan 06 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
Mar 10 Python
JAVA及PYTHON质数计算代码对比解析
Jun 10 Python
使用matplotlib的pyplot模块绘图的实现示例
Jul 12 Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
Feb 25 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调用Oracle存储过程的方法
2008/09/12 PHP
基于PHP文件操作的详解
2013/06/05 PHP
PHP7 echo和print语句实例用法
2019/02/15 PHP
php实现的表单验证类完整示例
2019/08/13 PHP
JQuery的html(data)方法与<script>脚本块的解决方法
2010/03/09 Javascript
Javascript 八进制转义字符(8进制)
2011/04/08 Javascript
jquery 操作css样式、位置、尺寸方法汇总
2014/11/28 Javascript
Javascript 实现图片无缝滚动
2014/12/19 Javascript
jQuery实现移动 和 渐变特效的点击事件
2015/02/26 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
js+canvas绘制矩形的方法
2016/01/28 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
jquery实现轮播图效果
2017/02/13 Javascript
利用jQuery实现一个简单的表格上下翻页效果
2017/03/14 Javascript
vue axios登录请求拦截器
2018/04/02 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
2018/07/05 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
2019/02/20 Javascript
javascript中join方法实例讲解
2019/02/21 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
2019/07/26 Javascript
简单了解微信小程序 e.target与e.currentTarget的不同
2019/09/27 Javascript
jquery简易手风琴插件的封装
2020/10/13 jQuery
微信小程序实现页面监听自定义组件的触发事件
2020/11/01 Javascript
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
Python实现的使用telnet登陆聊天室实例
2015/06/17 Python
Python针对给定列表中元素进行翻转操作的方法分析
2018/04/27 Python
python关于变量名的基础知识点
2020/03/03 Python
Django 自定义404 500等错误页面的实现
2020/03/08 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
2020/03/08 Python
CSS3的calc()做响应模式布局的实现方法
2017/09/06 HTML / CSS
Html5 滚动穿透的方法
2019/05/13 HTML / CSS
如果重写了对象的equals()方法,需要考虑什么
2014/11/02 面试题
实现中国梦思想汇报2014
2014/09/13 职场文书
要账委托书范本
2014/09/15 职场文书
反邪教观后感
2015/06/11 职场文书
SqlServer常用函数及时间处理小结
2023/05/08 SQL Server