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框架中的ORM建立查询API
Apr 20 Python
使用基于Python的Tornado框架的HTTP客户端的教程
Apr 24 Python
python利用dir函数查看类中所有成员函数示例代码
Sep 08 Python
Python实现接受任意个数参数的函数方法
Apr 21 Python
PyCharm在新窗口打开项目的方法
Jan 17 Python
numpy.linspace函数具体使用详解
May 27 Python
Python 3.8新特征之asyncio REPL
May 28 Python
python爬虫之爬取百度音乐的实现方法
Aug 24 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
May 27 Python
Keras在训练期间可视化训练误差和测试误差实例
Jun 16 Python
详解Python的爬虫框架 Scrapy
Aug 03 Python
10个顶级Python实用库推荐
Mar 04 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
我的群发邮件程序
2006/10/09 PHP
小偷PHP+Html+缓存
2006/11/25 PHP
Ajax+PHP边学边练 之五 图片处理
2009/12/03 PHP
PHP判断文件是否存在、是否可读、目录是否存在的代码
2012/10/03 PHP
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
2015/11/25 PHP
是 WordPress 让 PHP 更流行了 而不是框架
2016/02/03 PHP
记录一次排查PHP脚本执行卡住的问题
2016/12/27 PHP
PHP解决高并发的优化方案实例
2020/12/10 PHP
Ext.MessageBox工具类简介
2009/12/10 Javascript
jquery遍历checkbox介绍
2014/02/21 Javascript
Nodejs异步回调的优雅处理方法
2014/09/25 NodeJs
JavaScript编程的单例设计模讲解
2015/11/10 Javascript
使用jquery提交form表单并自定义action的实现代码
2016/05/25 Javascript
使用JQuery选择HTML遍历函数的方法
2016/09/17 Javascript
JS返回只包含数字类型的数组实例分析
2016/12/16 Javascript
关于meta viewport中target-densitydpi属性详解(推荐)
2017/08/18 Javascript
JavaScript代码执行的先后顺序问题
2017/10/29 Javascript
JavaScript中常见内置函数用法示例
2018/05/14 Javascript
微信小程序中换行空格(多个空格)写法详解
2018/07/10 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
nodejs分离html文件里面的js和css的方法
2019/04/09 NodeJs
Bootstrap table 实现树形表格联动选中联动取消功能
2019/09/30 Javascript
vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
2020/05/28 Javascript
[06:11]2014DOTA2国际邀请赛 专访团结一心的VG战队
2014/07/21 DOTA
Python正则表达式使用范例分享
2016/12/04 Python
Python修改文件往指定行插入内容的实例
2019/01/30 Python
Django密码存储策略分析
2020/01/09 Python
pycharm使用技巧之自动调整代码格式总结
2020/11/04 Python
Agoda.com官方网站:便宜预订全球酒店,高达80%的折扣
2018/04/04 全球购物
PHP面试题-$message和$$message的区别
2015/12/08 面试题
庆六一宣传标语
2014/10/08 职场文书
房屋租赁协议书
2014/10/18 职场文书
师德承诺书
2015/01/20 职场文书
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
2021/04/01 PHP
HTML5之高度塌陷问题的解决
2022/06/01 HTML / CSS