注意:模拟登陆时,必须保证settings.py里的 COOKIES_ENABLED (Cookies中间件) 处于开启状态

COOKIES_ENABLED = True 或 # COOKIES_ENABLED = False

策略一:直接POST数据(比如需要登陆的账户信息)

只要是需要提供post数据的,就可以用这种方法。下面示例里post的数据是账户密码:

# -*- coding: utf-8 -*-
import scrapyclass Renren1Spider(scrapy.Spider):name = "renren1"allowed_domains = ["renren.com"]def start_requests(self):url = 'http://www.renren.com/PLogin.do'# FormRequest 是Scrapy发送POST请求的方法yield scrapy.FormRequest(url = url,formdata = {"email" : "mr_mao_hacker@163.com", "password" : "axxxxxxxe"},callback = self.parse_page)def parse_page(self, response):with open("mao2.html", "w") as filename:filename.write(response.body)

策略二:标准的模拟登陆步骤

正统模拟登录方法:

  1. 首先发送登录页面的get请求,获取到页面里的登录必须的参数(比如说zhihu登陆界面的 _xsrf)

  2. 然后和账户密码一起post到服务器,登录成功

# -*- coding: utf-8 -*-
import scrapyclass Renren2Spider(scrapy.Spider):name = "renren2"allowed_domains = ["renren.com"]start_urls = ("http://www.renren.com/PLogin.do",)# 处理start_urls里的登录url的响应内容,提取登陆需要的参数(如果需要的话)def parse(self, response):# 提取登陆需要的参数#_xsrf = response.xpath("//_xsrf").extract()[0]# 发送请求参数,并调用指定回调函数处理yield scrapy.FormRequest.from_response(response,formdata = {"email" : "mr_mao_hacker@163.com", "password" : "axxxxxxxe"},#, "_xsrf" = _xsrf},callback = self.parse_page)# 获取登录成功状态,访问需要登录后才能访问的页面def parse_page(self, response):url = "http://www.renren.com/422167102/profile"yield scrapy.Request(url, callback = self.parse_newpage)# 处理响应内容def parse_newpage(self, response):with open("xiao.html", "w") as filename:filename.write(response.body)

策略三:直接使用保存登陆状态的Cookie模拟登陆

如果实在没办法了,可以用这种方法模拟登录,虽然麻烦一点,但是成功率100%

# -*- coding: utf-8 -*-
import scrapyclass RenrenSpider(scrapy.Spider):name = "renren"allowed_domains = ["renren.com"]start_urls = ('http://www.renren.com/111111','http://www.renren.com/222222','http://www.renren.com/333333',)cookies = {"anonymid" : "ixrna3fysufnwv","_r01_" : "1","ap" : "327550029","JSESSIONID" : "abciwg61A_RvtaRS3GjOv","depovince" : "GW","springskin" : "set","jebe_key" : "f6fb270b-d06d-42e6-8b53-e67c3156aa7e%7Cc13c37f53bca9e1e7132d4b58ce00fa3%7C1484060607478%7C1%7C1486198628950","t" : "691808127750a83d33704a565d8340ae9","societyguester" : "691808127750a83d33704a565d8340ae9","id" : "327550029","xnsid" : "f42b25cf","loginfrom" : "syshome"}# 可以重写Spider类的start_requests方法,附带Cookie值,发送POST请求def start_requests(self):for url in self.start_urls:yield scrapy.FormRequest(url, cookies = self.cookies, callback = self.parse_page)# 处理响应内容def parse_page(self, response):print "===========" + response.urlwith open("deng.html", "w") as filename:filename.write(response.body)

(案例六)三种scrapy模拟登陆策略相关推荐

  1. 三、scrapy爬虫框架——scrapy模拟登陆

    scrapy模拟登陆 学习目标: 应用 请求对象cookies参数的使用 了解 start_requests函数的作用 应用 构造并发送post请求 1. 回顾之前的模拟登陆的方法 1.1 reque ...

  2. vue前端常用的三种方式模拟获取数据

    前端的三种方式模拟获取数据 1⃣️.mockjs插件获取: 1.首先我们先进行安装mockjs,进入项目在终端输入:npm install mockjs --save 2.我们可以在src目录下新建m ...

  3. Scrapy 模拟登陆知乎--抓取热点话题

    工具准备 在开始之前,请确保 scrpay 正确安装,手头有一款简洁而强大的浏览器, 若是你有使用 postman 那就更好了. Python 1 scrapy genspider zhihu 使用以 ...

  4. scrapy 模拟登陆

    python 模拟登录豆瓣 并 发表动态:https://blog.csdn.net/freeking101/article/details/65445551 python网络爬虫之使用scrapy自 ...

  5. python模拟登陆遇到重定向_python - scrapy模拟登陆知乎出现重定向无法登陆问题

    当我使用scrapy想进行模拟登陆, 然后抓取首页的问题和答案时, 一直显示重定向问题 pythonfrom scrapy.contrib.spiders import CrawlSpider, Ru ...

  6. Scrapy模拟登陆豆瓣抓取数据

    由于豆瓣网站是反爬虫的,因此要破解反爬虫和模拟登录,还有需要破解验证码. 1创建项目 (在pycharm中创建scrapy爬虫工程即可) scrapy  startproject douban 其中d ...

  7. python之scrapy模拟登陆人人网

    1.settings.py主要配置信息,包括USER_AGENT等 # -*- coding: utf-8 -*-# Scrapy settings for renren project # # Fo ...

  8. 【python】三种梯度下降学习率策略的比较(exact line search, backtracking, diminishing steps)

    简要介绍: 1. exact line search 即在梯度下降的每次迭代中选择使梯度下降最大的学习率.我们可以使用黄金分割法来求解. 关于黄金分割法求根的实现golden_section()见专栏 ...

  9. 15.scrapy模拟登陆案例

    1.案例一 a.创建项目 scrapy startproject renren_login 进入项目路径 scrapy genspider renren "renren.com" ...

最新文章

  1. bash 判断 os 版本_Kali Linux 2020.3开始用ZSH取代Bash旅程
  2. 筛选平台数据包丢弃_高并发电商平台设计
  3. 去掉IE的图片工具条
  4. 第7章 贪吃蛇(《C和C++游戏趣味编程》配套教学视频)
  5. [转帖]ESXi 网卡绑定 增加吞吐量的方法
  6. P2326 AKN’s PPAP
  7. MATLAB-高斯滤波的实现
  8. 日期时间编辑器(模拟QDateTimeEdit的自定义控件)——QML
  9. vue-study-1 mvx模式
  10. Java学习day07-Java高级编程-多线程
  11. 方差与偏差的意义与推导过程
  12. android 控件美化,Android UI 美化
  13. 锁相环的组成和原理及应用
  14. thinkjs接收get请求、post请求
  15. WinCE下的USB游戏手柄驱动 GamePad Joystick
  16. 【String-easy】657. Robot Return to Origin 机器人能否回到原点
  17. docsify 安装配置文档
  18. HTML元素居中的10大方式及原理
  19. echarts实时温度计湿度计
  20. 《跃迁》--读书笔记--序言

热门文章

  1. 提交第一个spark作业到集群运行
  2. 朋友圈、浏览器分享实现
  3. go 简单的RPC服务与客户端通讯
  4. SQL Server 之 在与SQLServer建立连接时出现与网络相关的或特定于实例的错误
  5. SpringMVC介绍之约定优于配置
  6. ABBYY FineReader中的OCR选项怎样运用好
  7. Privacy Policy
  8. OC中NSString 的常用方法
  9. heartbeat v2+ldirectord+LVS集群
  10. 详细介绍JAVA中的字符串