python新浪_【图解】Python模拟登录新浪微博
上一篇文章《Scrapy用Cookie实现模拟登录》完成了用Cookie实现模拟登录,绕开了用户名、密码和验证码登录的步骤。今天来比较一下以常规验证(用户名密码+验证码)的方式实现新浪微博的模拟登录,看看实现的过程中有哪些要注意的点。
一、分析登录URL和表单字段
为了更好分析登录验证过程,找到登录提交的URL和表单字段,选取了新浪微博手机版的页面进行追踪分析,采用的工具是chrome开发者工具Network功能。
手机版登录页面
1、查看源代码,了解基本表单字段
通过查看登录页源代码,了解登录的url,用户名字段mobile, 密码字段password_9771(是password加上一个随机数),还有一些隐藏字段vk, capId,以及验证码。
2、Network追踪登录过程
1)登录的完整表单字段:
Form Data记录
这些字段名和值需要先从登录页面抓取:
密码字段名不是一个固定的值,password+随机数
vk, capId是隐藏字段,登录时必须
code 是验证码
2)登录的全过程:
新浪微博的登录过程,第一步是提交用户名密码及其他参数,POST方法,后面经过4次重定向,完成登录。
查看新浪微博登录重定向过程
重定向都是通过location发送,get方法。理论上登录流程,重定向的过程不需要我们关心,但是Scrapy在发送登录请求时,会遇到种种问题,需要调试时,了解整个过程就很关键。
二、抓取登录表单及参数
1、先发送一个登录url请求:start_requests()方法
def start_requests(self):
return [Request("http://login.weibo.cn/login/", meta={'cookiejar': 1}, callback=self.pre_login)]
2、抓取登录的表单字段:pre_login()方法
def pre_login(self,response):
selector = Selector(response)
pwdname =selector.xpath('//input[@type="password"]/@name').extract()[0]
vk = selector.xpath('//input[@name="vk"]/@value').extract()[0]
imgsrc = selector.xpath('/html/body/div[2]/form/div/img[1]/@src').extract()[0]
index = imgsrc.find('cpt=')
capId = imgsrc[index+4:]
action = selector.xpath('/html/body/div[2]/form/@action').extract()[0]
action = 'http://login.weibo.cn/login/'+action
# ... ... next, 完成验证码验证,构造表单参数...
三、完成验证码的验证
在这里,我没有采用复杂的图片验证算法库,而是直接在控制台上把验证码的URL输出来,访问一下,手工填入的方式,codeimg = raw_input('please input image:'), 简单粗暴、快速准确。
查看验证码
四、构造表单参数,提交登录请求
data = {'mobile':'name@126.com', #你的微博帐号
pwdname: '123456789', #你的密码
'code': codeimg, #获取的验证码
'remember':'',
'backURL':'http://weibo.cn/u/2508944032', #登录后要访问url
'backTitle':u'手机新浪网',
'tryCount':'',
'vk':vk, #隐藏字段
'capId':capId, #隐藏字段
'submit':u'登录'}
yield FormRequest(url=action,meta={'cookiejar': response.meta['cookiejar']},headers=self.headers,formdata=data,callback=self.parse_item)
注意这里使用了FormRequest直接提交登录url和表单参数,而不是用FormRequest.from_response(),因为请求的登录url不一样。Scrapy官网《FormRequest.from_response()方法模拟用户登录》
OK,使用Scrapy完成新浪微博验证登录。在实现的过程也遇到不少问题,查看错误提示,不断调试。
可能是因为新浪微博登录参数和流程的更改,大家可以对比一下网络上的代码以及Scrapy官网上的说明。
下一步就是数据提取、保存。之前文章都有讲过。
控制台信息
python新浪_【图解】Python模拟登录新浪微博相关推荐
- 图解python专业教程_图解Python视频教程(基础篇)课程
第2章HelloWorld:第一个Python程序 2-1在Windows操作系统中安装Python 2-2在MacOS操作系统中安装Python 2-3在Ubuntu操作系统中安装Python 2- ...
- python查询实时天气预报_微信公众号+python+新浪SAE实现实时天气预报功能
本文主要谈谈如何做一个具有天气预报功能的公众号. 话不多说先上图,实现的功能如下图所示: 点击微信右下角的"+"号,分享任意一个位置信息,公众号后台自动回复当地的天气情况.这里的天 ...
- 模拟登录新浪微博-python
模拟登录新浪微博(python) reference: http://www.jb51.net/article/46053.htm http://blog.csdn.net/u010487568/ar ...
- Python培训分享:python如何用cookie实现自动模拟登录?
本期教程Python培训教程为大家带来的是python如何用cookie实现自动模拟登录?据小编的了解,python实现cookie自动登录,目前来说有许多第三方库都可以直接使用,这里以常用的requ ...
- Python 新浪实时新闻词云
''' Python 新浪实时新闻词云 by 郑瑞国 ''' from wordcloud import WordCloud import re import urllib.request impor ...
- python 时间序列预测_使用Python进行动手时间序列预测
python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...
- python 概率分布模型_使用python的概率模型进行公司估值
python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...
- scrapy模拟登录新浪微博
hi: all, scrapy搞模拟登录真的很简单哦,以下均是在你安装scrapy成功的前提下哦. 首先,分析新浪微薄的登录流程,使用抓包工具得到下面的图片: 一般来说,登录主要就是对服务器进行pos ...
- curl模拟登录新浪微博
curl模拟登录新浪微博 这几天要做个获取新浪微博@我的信息, 又不用第三方登录,所以只能通过模拟登录来获取信息,研究的一下发现直接模拟登录微博比较困难,验证的算法比较复杂,于是绕道通过登录新浪通行证 ...
最新文章
- ArrayAdapter的使用
- 关于IOCP完成端口的文章
- 【特征工程】不容错过的 5 种特征选择的方法!
- 安卓apk签名提取工具_Android测试工具入门介绍(二)
- 基于JAVA+SpringBoot+Mybatis+MYSQL的新闻发布系统
- rrdtool的安装
- Java自学之路(新手一定要看)
- erphpdown最新版下载v11.12,WordPress内容付费插件
- 【每日微信新闻早报简报】10月11日 星期五
- 第7章第29节:四图排版:四张图片并列排版 [PowerPoint精美幻灯片实战教程]
- msfvenom手册
- ChatGPT接入微信公众号(手把手教学)
- 入手python时踩过的坑——缩进篇
- WeiKuCMS多功能微信营销服务系统
- 个人站长如何接入支付打赏
- 007--python--英制单位英寸和公制单位厘米的互换
- php soapclient 异常,PHP SoapClient:SoapFault异常无法连接到主机
- 《Unity3D网络游戏实战》第7章
- 性能测试工具locust压测介绍
- CORD-19数据集以及相关分析代码介绍