#-*- coding: utf-8 -*-#import 这边需要注意的是只有一个rsa这个模块是需要install的,其他的都是内置

importre , urllib ,urllib2 , cookielib , base64 , binascii , rsa, sys

reload(sys)

sys.setdefaultencoding("utf-8")#以下4行代码说简单点就是让你接下来的所有get和post请求都带上已经获取的cookie,因为稍大些的网站的登陆验证全靠cookie

cj =cookielib.CookieJar()

opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

urllib2.install_opener(opener)#封装一个用于get的函数,新浪微博这边get出来的内容编码都是-8,所以把utf-8写死在里边了,真实项目中建议根据内容实际编码来决定

defgetData(url) :

request=urllib2.Request(url)

response=urllib2.urlopen(request)

text= response.read().decode('utf-8')returntext#封装一个用于post的函数,验证密码和用户名都是post的,所以这个postData在本demo中专门用于验证用户名和密码

defpostData(url , data) :#headers需要我们自己来模拟

headers = {'User-Agent' : 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)'}#这里的urlencode用于把一个请求对象用'&'来接来字符串化,接着就是编码成utf-8

data = urllib.urlencode(data).encode('utf-8')

request=urllib2.Request(url , data , headers)

response=urllib2.urlopen(request)

text= response.read().decode('gbk')returntextdeflogin_weibo(nick , pwd) :#==========================获取servertime , pcid , pubkey , rsakv===========================

#预登陆请求,获取到若干参数

prelogin_url = 'http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=%s&rsakt=mod&checkpin=1&client=ssologin.js(v1.4.15)&_=1400822309846' %nick

preLogin=getData(prelogin_url)#下面获取的四个值都是接下来要使用的

servertime = re.findall('"servertime":(.*?),', preLogin)[0]

pubkey= re.findall('"pubkey":"(.*?)",', preLogin)[0]

rsakv= re.findall('"rsakv":"(.*?)",', preLogin)[0]

nonce= re.findall('"nonce":"(.*?)",', preLogin)[0]#===============对用户名和密码加密================

#好,你已经来到登陆新浪微博最难的一部分了,如果这部分没有大神出来指点一下,那就真是太难了,我也不想多说什么,反正就是各种加密,最后形成了加密后的su和sp

su = base64.b64encode(bytes(urllib.quote(nick) , encoding = 'utf-8'))

rsaPublickey= int(pubkey , 16)

key= rsa.PublicKey(rsaPublickey , 65537)#稍微说一下的是在我网上搜到的文章中,有些文章里并没有对拼接起来的字符串进行bytes,这是python3的新方法好像是。rsa.encrypt需要一个字节参数,这一点和之前不一样。其实上面的base64.b64encode也一样

message = str(servertime) + '\t' + str(nonce) + '\n' +str(pwd)

sp=binascii.b2a_hex(rsa.encrypt(message , key))#=======================登录=======================

#param就是激动人心的登陆post参数,这个参数用到了若干个上面第一步获取到的数据,可说的不多

param = {'entry' : 'weibo' , 'gateway' : 1 , 'from' : '' , 'savestate' : 7 , 'useticket' : 1 , 'pagerefer' : 'http://login.sina.com.cn/sso/logout.php?entry=miniblog&r=http%3A%2F%2Fweibo.com%2Flogout.php%3Fbackurl%3D' , 'vsnf' : 1 , 'su' : su , 'service' : 'miniblog' , 'servertime' : servertime , 'nonce' : nonce , 'pwencode' : 'rsa2' , 'rsakv' : rsakv , 'sp' : sp , 'sr' : '1680*1050','encoding' : 'UTF-8' , 'prelt' : 961 , 'url' : 'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack'}#这里就是使用postData的唯一一处,也很简单

s = postData('http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)', param)#好了,当你的代码执行到这里时,已经完成了大部分了,可是有很多爬虫童鞋跟我一样还就栽在了这里,假如你跳过这里直接去执行获取粉丝的这几行代码你就会发现你获取的到还是让你登陆的页面,真郁闷啊,我就栽在这里长达一天啊

#好了,我们还是继续。这个urll是登陆之后新浪返回的一段脚本中定义的一个进一步登陆的url,之前还都是获取参数和验证之类的,这一步才是真正的登陆,所以你还需要再一次把这个urll获取到并用get登陆即可

urll= re.findall("location.replace\(\'(.*?)\'\);", s)[0]

getData(urll)#======================获取粉丝====================

#如果你没有跳过刚才那个urll来到这里的话,那么恭喜你!你成功了,接下来就是你在新浪微博里畅爬的时候了,获取到任何你想获取到的数据了!

#可以尝试着获取你自己的微博主页看看,你就会发现那是一个多大几百kb的文件了

text = getData('http://weibo.com/smilence2u')fp= open('yeah.txt' , 'w', 512)

fp.write(text)

fp.close()

login_weibo('user_mail' , 'password')

pythonurllib新浪微博_Python登陆新浪微博相关推荐

  1. pythonurllib微博登陆是什么_python模拟新浪微博登陆功能(新浪微博爬虫)

    1.主函数(WeiboMain.py): import urllib2 import cookielib import WeiboEncode import WeiboSearch if __name ...

  2. python爬取新浪微博内容_python机器登陆新浪微博抓取数据

    1.[代码][Python]代码 # import 这边需要注意的是只有一个rsa这个模块是需要install的,其他的都是内置 import re , urllib.parse , urllib.r ...

  3. python登录新浪微博抓取微博内容_python机器登陆新浪微博抓取数据

    使用python机器登陆新浪微博抓取数据 1.[代码][Python]代码 # import 这边需要注意的是只有一个rsa这个模块是需要install的,其他的都是内置 import re , ur ...

  4. pythonurllib新浪微博_python模拟登录新浪微博抓取数据(cookielib和urllib2).doc

    HYPERLINK "/article/python/22972.html" /article/python/22972.html python模拟登录新浪微博抓取数据(cooki ...

  5. 新浪微博第三方登陆重定向错误23123

    新浪微博第三方登陆重定向错误23123 2019年06月02日 13:49:43 温室花朵 阅读数:2更多 个人分类: 第三方微博登陆21323 编辑 当我们使用微博第三方登陆的时候,发现登陆出错了, ...

  6. python如何实现模拟登录_超详细的Python实现新浪微博模拟登陆(小白都能懂)

    最近由于需要一直在研究微博的爬虫,第一步便是模拟登陆,从开始摸索到走通模拟登陆这条路其实还是挺艰难的,需要一定的经验,为了让朋友们以后少走点弯路,这里我把我的分析过程和代码都附上来. 首先,我们先用正 ...

  7. 分享:Python使用cookielib和urllib2模拟登陆新浪微博并抓取数据

    Python使用cookielib和urllib2模拟登陆新浪微博并抓取数据 http://my.oschina.net/leopardsaga/blog/94774

  8. 新浪微博授权登陆获取个人信息

    新浪微博授权登陆获取个人信息 http://pan.baidu.com/s/1eQ7tNSA 这个是接入的phpsdk 和demo 一.phpsdk的组成 里面看到6个文件:callback.php. ...

  9. Python_模拟登陆新浪微博

    模拟网页登陆 1.下载http抓包软件Fiddler,打开后可以抓取到所有经过80端口的数据包 2.打开登陆新浪微博的界面,可以在Fiddler中看到相关的信息,查了一晚上的资料得知,新浪微博登陆主要 ...

最新文章

  1. 干货!链家二手房数据抓取及内容解析要点
  2. php基础:switch cass控制结构 代替if
  3. Linux笔记(更改权限chmod,更改所有组chown,umask,隐藏权限chattr)
  4. 探讨由于死锁或进程阻塞造成的ASP突然不能访问的问题
  5. face key point with 7 points
  6. 【渝粤题库】陕西师范大学164202 市场营销学 作业(专升本)
  7. pbs 写matlab作业,pbs提交作业
  8. Visual studio 2013安装及单元测试
  9. 帮助您快速开始下一个移动APP应用模板、UI设计
  10. 数组和JSON之间的格式转换
  11. PowerShell设置命令别名Alias
  12. 收尾过程组-项目管理
  13. 简单使用apipost和jmeter 测试接口
  14. Git和码云项目平台使用文档
  15. 从产品模式到生活方式,苏宁小Biu车联网迈过了哪些坎?
  16. 论文笔记:TrafficPredict: Trajectory Prediction for Heterogeneous Traffic-Agents
  17. 分词工具与方法:jieba、spaCy等
  18. matplotlib报Unknown symbol: \rule, found ‘\‘ (at char 42), (line:1, col:43)
  19. 【UmiJS 3.x入门】
  20. 苹果第四财季净利润85亿美元 同比增长13%

热门文章

  1. 【转】STM32 定时器 输出比较模式和PWM输出模式的区别
  2. linux xargs
  3. 新出生的机器狗,打滚1小时后自己掌握走路,吴恩达开山大弟子最新成果
  4. JavaScript 实例:当当网 首页选项卡切换效果
  5. matlab里butter,matlab中butter函数
  6. 【Axure技巧】Axure RP 9 生成HTML文档如何自动打开页面列表?
  7. quartus编译报错:Error (176310): Can‘t place multiple pins assigned to pin location Pin_F16 (IOPAD_X34_Y1
  8. android 放大平铺图片
  9. 电子电路硬件学习目标
  10. 都 2021 年了,你还在用 Kafka?快试试这个全新平台吧