(案例六)三种scrapy模拟登陆策略
注意:模拟登陆时,必须保证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)
策略二:标准的模拟登陆步骤
正统模拟登录方法:
首先发送登录页面的get请求,获取到页面里的登录必须的参数(比如说zhihu登陆界面的 _xsrf)
然后和账户密码一起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模拟登陆策略相关推荐
- 三、scrapy爬虫框架——scrapy模拟登陆
scrapy模拟登陆 学习目标: 应用 请求对象cookies参数的使用 了解 start_requests函数的作用 应用 构造并发送post请求 1. 回顾之前的模拟登陆的方法 1.1 reque ...
- vue前端常用的三种方式模拟获取数据
前端的三种方式模拟获取数据 1⃣️.mockjs插件获取: 1.首先我们先进行安装mockjs,进入项目在终端输入:npm install mockjs --save 2.我们可以在src目录下新建m ...
- Scrapy 模拟登陆知乎--抓取热点话题
工具准备 在开始之前,请确保 scrpay 正确安装,手头有一款简洁而强大的浏览器, 若是你有使用 postman 那就更好了. Python 1 scrapy genspider zhihu 使用以 ...
- scrapy 模拟登陆
python 模拟登录豆瓣 并 发表动态:https://blog.csdn.net/freeking101/article/details/65445551 python网络爬虫之使用scrapy自 ...
- python模拟登陆遇到重定向_python - scrapy模拟登陆知乎出现重定向无法登陆问题
当我使用scrapy想进行模拟登陆, 然后抓取首页的问题和答案时, 一直显示重定向问题 pythonfrom scrapy.contrib.spiders import CrawlSpider, Ru ...
- Scrapy模拟登陆豆瓣抓取数据
由于豆瓣网站是反爬虫的,因此要破解反爬虫和模拟登录,还有需要破解验证码. 1创建项目 (在pycharm中创建scrapy爬虫工程即可) scrapy startproject douban 其中d ...
- python之scrapy模拟登陆人人网
1.settings.py主要配置信息,包括USER_AGENT等 # -*- coding: utf-8 -*-# Scrapy settings for renren project # # Fo ...
- 【python】三种梯度下降学习率策略的比较(exact line search, backtracking, diminishing steps)
简要介绍: 1. exact line search 即在梯度下降的每次迭代中选择使梯度下降最大的学习率.我们可以使用黄金分割法来求解. 关于黄金分割法求根的实现golden_section()见专栏 ...
- 15.scrapy模拟登陆案例
1.案例一 a.创建项目 scrapy startproject renren_login 进入项目路径 scrapy genspider renren "renren.com" ...
最新文章
- bash 判断 os 版本_Kali Linux 2020.3开始用ZSH取代Bash旅程
- 筛选平台数据包丢弃_高并发电商平台设计
- 去掉IE的图片工具条
- 第7章 贪吃蛇(《C和C++游戏趣味编程》配套教学视频)
- [转帖]ESXi 网卡绑定 增加吞吐量的方法
- P2326 AKN’s PPAP
- MATLAB-高斯滤波的实现
- 日期时间编辑器(模拟QDateTimeEdit的自定义控件)——QML
- vue-study-1 mvx模式
- Java学习day07-Java高级编程-多线程
- 方差与偏差的意义与推导过程
- android 控件美化,Android UI 美化
- 锁相环的组成和原理及应用
- thinkjs接收get请求、post请求
- WinCE下的USB游戏手柄驱动 GamePad Joystick
- 【String-easy】657. Robot Return to Origin 机器人能否回到原点
- docsify 安装配置文档
- HTML元素居中的10大方式及原理
- echarts实时温度计湿度计
- 《跃迁》--读书笔记--序言