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的Django框架中调用方法和处理无效变量
Jul 15 Python
Python中如何获取类属性的列表
Dec 26 Python
pandas 数据实现行间计算的方法
Jun 08 Python
基于Python开发chrome插件的方法分析
Jul 07 Python
Python爬虫小技巧之伪造随机的User-Agent
Sep 13 Python
详解python列表生成式和列表生成式器区别
Mar 27 Python
浅析Python3中的对象垃圾收集机制
Jun 06 Python
python Pandas如何对数据集随机抽样
Jul 29 Python
python中hasattr()、getattr()、setattr()函数的使用
Aug 16 Python
完美解决pycharm 不显示代码提示问题
Jun 02 Python
基于python爬取链家二手房信息代码示例
Oct 21 Python
Python Numpy库的超详细教程
Apr 06 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,mysqli,PDO的各自不同介绍
2012/09/19 PHP
简单的cookie计数器实现源码
2013/06/07 PHP
浅析PHP程序设计中的MVC编程思想
2014/07/28 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
PHP mysql事务问题实例分析
2016/01/18 PHP
PHP ADODB实现分页功能简单示例
2018/05/25 PHP
jQuery的基本概念与高级编程
2015/05/14 Javascript
jQuery实现进度条效果代码
2015/12/17 Javascript
Bootstrap入门书籍之(四)菜单、按钮及导航
2016/02/17 Javascript
javascript中call apply 与 bind方法详解
2016/03/10 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
javascript DOM的详解及实例代码
2017/03/06 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
react-navigation之动态修改title的内容
2018/09/26 Javascript
使用webpack打包后的vue项目如何正确运行(express)
2018/10/26 Javascript
初学vue出现空格警告的原因及其解决方案
2019/10/31 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
Python ljust rjust center输出
2008/09/06 Python
Python实现的tcp端口检测操作示例
2018/07/24 Python
python使用magic模块进行文件类型识别方法
2018/12/08 Python
对Python 简单串口收发GUI界面的实例详解
2019/06/12 Python
python 实现两个线程交替执行
2020/05/02 Python
css3的transition效果和transfor效果示例介绍
2013/10/30 HTML / CSS
香港百佳网上超级市场:PARKNSHOP.com
2020/06/10 全球购物
毕业班联欢会主持词
2014/03/27 职场文书
大学生村官承诺书
2014/03/28 职场文书
物联网工程专业推荐信
2014/09/08 职场文书
村主任个人对照检查材料
2014/10/01 职场文书
群众路线教育实践活动调研报告
2014/11/03 职场文书
2014年保洁员工作总结
2014/11/19 职场文书
幼儿园工作总结2015
2015/04/01 职场文书
事业单位工作人员2015年度思想工作总结
2015/10/15 职场文书
导游词之金鞭溪风景区
2019/09/12 职场文书
详解Vue项目的打包方式(生成dist文件)
2022/01/18 Vue.js