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正则表达式
Jan 15 Python
python 文件操作api(文件操作函数)
Aug 28 Python
Python快速从注释生成文档的方法
Dec 26 Python
python正则表达式面试题解答
Apr 28 Python
python爬虫爬取淘宝商品信息
Feb 23 Python
Vue的el-scrollbar实现自定义滚动
May 29 Python
pandas进行数据的交集与并集方式的数据合并方法
Jun 27 Python
使用 Python 实现微信群友统计器的思路详解
Sep 26 Python
python如何获取当前文件夹下所有文件名详解
Jan 25 Python
Django用户认证系统 组与权限解析
Aug 02 Python
Django REST framwork的权限验证实例
Apr 02 Python
python实现测试工具(二)——简单的ui测试工具
Oct 19 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/06/21 PHP
php GUID生成函数和类
2014/03/10 PHP
PHP常用编译参数中文说明
2014/09/27 PHP
php强制更新图片缓存的方法
2015/02/11 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
PHP实现微信提现(企业付款到零钱)
2019/08/01 PHP
JQuery this 和 $(this) 的区别
2009/08/23 Javascript
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
jquery(hide方法)隐藏指定元素实例
2013/11/11 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
2015/10/29 Javascript
通过button将form表单的数据提交到action层的实例
2017/09/08 Javascript
详解React Native顶|底部导航使用小技巧
2017/09/14 Javascript
Angular实现可删除并计算总金额的购物车功能示例
2017/12/26 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
vue基础之data存储数据及v-for循环用法示例
2019/03/08 Javascript
vue中使用vue-cli接入融云实现即时通信
2019/04/19 Javascript
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
vue实现页面滚动到底部刷新
2019/08/16 Javascript
layui radio单选限制下一个radio单选的实例
2019/09/03 Javascript
iview实现图片上传功能
2020/06/29 Javascript
js属性对象的hasOwnProperty方法的使用
2021/02/05 Javascript
用Python生成器实现微线程编程的教程
2015/04/13 Python
Python实现的微信支付方式总结【三种方式】
2019/04/13 Python
Python中最好用的命令行参数解析工具(argparse)
2019/08/23 Python
在keras里面实现计算f1-score的代码
2020/06/15 Python
html5 学习简单的拾色器
2010/09/03 HTML / CSS
英国最大的在线蜡烛商店:Candles Direct
2019/03/26 全球购物
C语言面试题
2013/05/19 面试题
数组越界问题
2015/10/21 面试题
铁人纪念馆观后感
2015/06/16 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
小学生教师节广播稿
2015/08/19 职场文书
单位提档介绍信
2015/10/22 职场文书
Docker 镜像介绍以及commit相关操作
2022/04/13 Servers