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压缩文件夹内所有文件为zip文件的方法
Jun 20 Python
Python实现简易Web爬虫详解
Jan 03 Python
python实现验证码识别功能
Jun 07 Python
Python使用requests提交HTTP表单的方法
Dec 26 Python
Python使用Shelve保存对象方法总结
Jan 28 Python
Python基于opencv实现的简单画板功能示例
Mar 04 Python
Python 仅获取响应头, 不获取实体的实例
Aug 21 Python
Python通过cv2读取多个USB摄像头
Aug 28 Python
在Python IDLE 下调用anaconda中的库教程
Mar 09 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
Jun 02 Python
python能做哪些生活有趣的事情
Sep 09 Python
python定义具名元组实例操作
Feb 28 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中的float类型使用说明
2010/07/27 PHP
PHP中file_exists与is_file,is_dir的区别介绍
2012/09/12 PHP
使用ThinkPHP+Uploadify实现图片上传功能
2014/06/26 PHP
symfony2.4的twig中date用法分析
2016/03/18 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
B/S开发中常用javaScript技术与代码
2007/03/09 Javascript
javaScript 关闭浏览器 (不弹出提示框)
2010/01/31 Javascript
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
2013/07/02 Javascript
浏览器的JavaScript引擎的识别方法
2013/10/20 Javascript
js数组操作学习总结
2013/11/04 Javascript
jquery实现的导航固定效果
2014/04/28 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
2016/08/11 Javascript
Easyui的组合框的取值与赋值
2016/10/28 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
2016/12/28 Javascript
微信小程序实现传参数的几种方法示例
2018/01/10 Javascript
详解nodejs通过响应回写的方式渲染页面资源
2018/04/07 NodeJs
解决IE11 vue +webpack 项目中数据更新后页面没有刷新的问题
2018/09/25 Javascript
JavaScript时间与时间戳的转换操作实例分析
2018/12/07 Javascript
iview tabs 顶部导航栏和模块切换栏的示例代码
2019/03/04 Javascript
在SSM框架下用laypage和ajax实现分页和数据交互的方法
2019/09/27 Javascript
浅析Python中的序列化存储的方法
2015/04/28 Python
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
用Python实现读写锁的示例代码
2018/11/05 Python
Opencv+Python 色彩通道拆分及合并的示例
2018/12/08 Python
python 随机打乱 图片和对应的标签方法
2018/12/14 Python
python numpy存取文件的方式
2020/04/01 Python
在线购买澳大利亚设计师手拿包和奢华晚装手袋:Olga Berg
2019/03/20 全球购物
国贸专业的职业规划书
2014/03/15 职场文书
试用期转正后的自我评价
2014/09/21 职场文书
四风自我剖析材料
2014/09/30 职场文书
个人学习总结范文
2015/02/15 职场文书
酒店人事主管岗位职责
2015/04/11 职场文书
毕业论文致谢词
2015/05/14 职场文书
2015小学语文教师个人工作总结
2015/05/20 职场文书
起诉书格式范文
2015/05/20 职场文书
暂住证明怎么写
2015/06/19 职场文书