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打不开文件(文件不存在)的问题
Feb 18 Python
解决.ui文件生成的.py文件运行不出现界面的方法
Jun 19 Python
pytorch中的embedding词向量的使用方法
Aug 18 Python
python 模拟创建seafile 目录操作示例
Sep 26 Python
Python TCP通信客户端服务端代码实例
Nov 21 Python
python3中利用filter函数输出小于某个数的所有回文数实例
Nov 24 Python
深度学习入门之Pytorch 数据增强的实现
Feb 26 Python
pytorch 常用函数 max ,eq说明
Jun 28 Python
python利用递归方法实现求集合的幂集
Sep 07 Python
利用python批量爬取百度任意类别的图片的实现方法
Oct 07 Python
pytorch实现线性回归以及多元回归
Apr 11 Python
Pytorch 中net.train 和 net.eval的使用说明
May 22 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写的简易聊天室代码
2011/06/04 PHP
Array of country list in PHP with Zend Framework
2011/10/17 PHP
php递归删除目录下的文件但保留的实例分享
2014/05/10 PHP
Linux下手动编译安装PHP扩展的例子分享
2014/07/15 PHP
改写一个简单的菜单 弹性大小
2010/12/02 Javascript
关于JavaScript中string 的replace
2013/04/12 Javascript
获取中文字符串的实际长度代码
2014/06/05 Javascript
jQuery异步上传文件插件ajaxFileUpload详细介绍
2015/05/19 Javascript
JQuery中DOM事件冒泡实例分析
2015/06/13 Javascript
在javascript中随机数 math random如何生成指定范围数值的随机数
2015/10/21 Javascript
jQuery内存泄露解决办法
2016/12/13 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
JS库中的Particles.js在vue上的运用案例分析
2017/09/13 Javascript
React.Js添加与删除onScroll事件的方法详解
2017/11/03 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
vue+openlayers绘制省市边界线
2020/12/24 Vue.js
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
Python实现设置windows桌面壁纸代码分享
2015/03/28 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
2018/11/30 Python
详解Python使用Plotly绘图工具,绘制甘特图
2019/04/02 Python
海淘母婴商城:国际妈咪
2016/07/23 全球购物
英国珠宝钟表和家居礼品精品店:David Shuttle
2018/02/24 全球购物
优秀的计算机专业求职信范文
2013/12/27 职场文书
中学生爱国演讲稿
2013/12/31 职场文书
幼儿园托班开学寄语
2014/01/18 职场文书
竞选班干部演讲稿400字
2014/08/20 职场文书
我的未来不是梦演讲稿
2014/09/02 职场文书
反四风个人对照检查材料
2014/09/26 职场文书
有限责任公司股东合作协议书范本
2014/10/30 职场文书
党的群众路线教育实践活动个人对照检查材料(校长)
2014/11/05 职场文书
2014年世界艾滋病日演讲稿
2014/11/28 职场文书
2014年社区宣传工作总结
2014/12/02 职场文书
学校远程教育工作总结
2015/08/11 职场文书
高一数学教学反思
2016/02/18 职场文书
Python数据分析之pandas读取数据
2021/06/02 Python