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 23 Python
python概率计算器实例分析
Mar 25 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
Nov 30 Python
python机器学习实战之最近邻kNN分类器
Dec 20 Python
python实现隐马尔科夫模型HMM
Mar 25 Python
浅析Python四种数据类型
Sep 26 Python
Django restframework 源码分析之认证详解
Feb 22 Python
VSCode Python开发环境配置的详细步骤
Feb 22 Python
python SocketServer源码深入解读
Sep 17 Python
Python异常模块traceback用法实例分析
Oct 22 Python
解决Python 函数声明先后顺序出现的问题
Sep 02 Python
Python读写Excel表格的方法
Mar 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
mysql+php分页类(已测)
2008/03/31 PHP
php下图片文字混合水印与缩略图实现代码
2009/12/11 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
2018/09/26 PHP
php DES加密算法实例分析
2019/09/18 PHP
Prototype使用指南之range.js
2007/01/10 Javascript
JavaScript XML实现两级级联下拉列表
2008/11/10 Javascript
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
node.js中的http.get方法使用说明
2014/12/14 Javascript
JavaScript中split() 使用方法汇总
2015/04/17 Javascript
jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
2016/07/19 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
基于JS实现二维码图片固定在右下角某处并跟随滚动条滚动
2017/02/08 Javascript
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
小程序云开发初探(小结)
2018/10/24 Javascript
vue中组件的过渡动画及实现代码
2018/11/21 Javascript
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
python爬取网站数据保存使用的方法
2013/11/20 Python
python中解析json格式文件的方法示例
2017/05/03 Python
Python对字符串实现去重操作的方法示例
2017/08/11 Python
Python3数据库操作包pymysql的操作方法
2018/07/16 Python
查看python下OpenCV版本的方法
2018/08/03 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
Python OpenCV实现测量图片物体宽度
2020/05/27 Python
基于PyTorch中view的用法说明
2021/03/03 Python
巴西备受欢迎的服装和生活方式品牌:FARM Rio
2020/02/04 全球购物
EJB发布WEB服务一般步骤
2012/10/31 面试题
写求职信要注意什么问题
2014/04/12 职场文书
合伙经营协议书范本
2014/04/18 职场文书
聋哑人盗窃罪辩护词
2015/05/21 职场文书
毕业欢送会致辞
2015/07/29 职场文书
2016年幼儿园教师师德承诺书
2016/03/25 职场文书
2019森林防火宣传标语大全!
2019/07/03 职场文书
一文简单了解MySQL前缀索引
2022/04/03 MySQL
4种方法python批量修改替换列表中元素
2022/04/07 Python
使用refresh_token实现无感刷新页面
2022/04/26 Javascript