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正则匹配抓取豆瓣电影链接和评论代码分享
Dec 27 Python
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
Feb 24 Python
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
Jun 25 Python
跟老齐学Python之编写类之三子类
Oct 11 Python
Python简单实现自动删除目录下空文件夹的方法
Aug 29 Python
Python随机生成均匀分布在单位圆内的点代码示例
Nov 13 Python
详解django的serializer序列化model几种方法
Oct 16 Python
Django ManyToManyField 跨越中间表查询的方法
Dec 18 Python
python网络爬虫 CrawlSpider使用详解
Sep 27 Python
Python numpy线性代数用法实例解析
Nov 15 Python
使用Python-OpenCV消除图像中孤立的小区域操作
Jul 05 Python
教你如何用Python实现人脸识别(含源代码)
Jun 23 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 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
2010/03/23 PHP
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
2012/06/17 PHP
二进制交叉权限微型php类分享
2014/02/07 PHP
Codeigniter实现多文件上传并创建多个缩略图
2014/06/12 PHP
PHP实现的方程求解示例分析
2016/11/11 PHP
PHP中常见的密码处理方式和建议总结
2018/10/14 PHP
PHP利用递归函数实现无限级分类的方法
2019/03/22 PHP
utf-8编码引起js输出中文乱码的解决办法
2010/06/23 Javascript
引用 js在IE与FF之间的区别详细解析
2013/11/20 Javascript
jQuery实现拖动剪裁图片作为头像
2016/12/28 Javascript
纯js实现的积木(div层)拖动功能示例
2017/07/19 Javascript
Bootstrap4如何定制自己的颜色和风格
2018/02/26 Javascript
详解webpack4.x之搭建前端开发环境
2019/03/28 Javascript
NodeJs 实现简单WebSocket即时通讯的示例代码
2019/08/05 NodeJs
原生js实现下拉选项卡
2019/11/27 Javascript
详解微信小程序之提高应用速度小技巧
2020/01/07 Javascript
node.js开发辅助工具nodemon安装与配置详解
2020/02/06 Javascript
解决Antd 里面的select 选择框联动触发的问题
2020/10/24 Javascript
Python爬虫PyQuery库基本用法入门教程
2018/08/04 Python
利用python实现汉字转拼音的2种方法
2019/08/12 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
2020/02/13 Python
Python sqlalchemy时间戳及密码管理实现代码详解
2020/08/01 Python
Python 打印自己设计的字体的实例讲解
2021/01/04 Python
PyCharm+Miniconda3安装配置教程详解
2021/02/16 Python
html5手机键盘弹出收起的处理
2020/01/20 HTML / CSS
blueseventy官网:铁人三项和比赛泳衣
2021/02/06 全球购物
应届护士求职信范文
2014/01/26 职场文书
优秀团队获奖感言
2014/02/19 职场文书
节约用水的口号
2014/06/20 职场文书
2016年春节慰问信息
2015/03/25 职场文书
钱学森观后感
2015/06/04 职场文书
2015年物业管理员工工作总结
2015/10/15 职场文书
Python提取PDF指定内容并生成新文件
2021/06/09 Python
详解JS数组方法
2021/11/20 Javascript
2021年国产动漫公司排行前十名,玄机科技上榜,第二推出过铠甲勇士
2022/03/18 杂记