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切片用法实例教程
Sep 08 Python
python交互式图形编程实例(一)
Nov 17 Python
python初学之用户登录的实现过程(实例讲解)
Dec 23 Python
Python使用functools实现注解同步方法
Feb 06 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
Oct 31 Python
python实现AES加密与解密
Mar 28 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
Apr 11 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
Feb 20 Python
详解用Python进行时间序列预测的7种方法
Mar 13 Python
python 抓取知乎指定回答下视频的方法
Jul 09 Python
Python实战之用tkinter库做一个鼠标模拟点击器
Apr 27 Python
python unittest单元测试的步骤分析
Aug 02 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不用正则采集速度探究总结
2008/03/24 PHP
php基于mcrypt的加密解密实例
2014/10/27 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
php正则表达式获取内容所有链接
2015/07/24 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
2017/05/11 PHP
Laravel中错误与异常处理的用法示例
2018/09/16 PHP
PDO::_construct讲解
2019/01/27 PHP
JS+flash实现chrome和ie浏览器下同时可以复制粘贴
2013/09/22 Javascript
用js来获取上传的文件名纯粹是为了美化而用
2013/10/23 Javascript
Js可拖拽放大的层拖动特效实现方法
2015/02/25 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
jquery实现TAB选项卡鼠标经过带延迟效果的方法
2015/07/27 Javascript
BootStrap制作导航条实例代码
2016/05/06 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
2017/06/29 jQuery
快速处理vue渲染前的显示问题
2018/03/05 Javascript
详解jQuery中的getAll()和cleanData()
2019/04/15 jQuery
关于element-ui的隐藏组件el-scrollbar的使用
2019/05/29 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
pycharm使用matplotlib.pyplot不显示图形的解决方法
2018/10/28 Python
Python绘制二维曲线的日常应用详解
2019/12/04 Python
Tensorflow不支持AVX2指令集的解决方法
2020/02/03 Python
Django 5种类型Session使用方法解析
2020/04/29 Python
关于Kotlin中SAM转换的那些事
2020/09/15 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
西班牙网上书店:Casa del Libro
2016/11/01 全球购物
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
LVMH旗下最大的奢侈品网站平台:24S
2020/05/24 全球购物
上课打牌的检讨书
2014/02/15 职场文书
建议书的格式
2014/05/12 职场文书
4S店客服专员岗位职责
2015/04/07 职场文书
意外事故赔偿协议书
2016/03/22 职场文书
学习计划是什么
2019/04/30 职场文书
Python实现文本文件拆分写入到多个文本文件的方法
2021/04/18 Python
从结婚开始的恋爱故事。小说《我的美好婚事》TV动画化决定
2022/04/07 日漫