• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > python模拟新浪微博登陆功能(新浪微博爬虫)

python模拟新浪微博登陆功能(新浪微博爬虫)

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了python新浪微博爬虫,python微博爬虫,python爬虫,python爬虫入门教程,python爬虫教程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

1、主函数(WeiboMain.py):

import WeiboEncode
import WeiboSearch

if __name__ == '__main__':
    weiboLogin = WeiboLogin('×××@gmail.com', '××××')#邮箱(账号)、密码
    if weiboLogin.Login() == True:
        print "登陆成功!"
</div>

前两个import是加载Python的网络编程模块,后面的import是加载另两个文件WeiboEncode.py和Weiboseach.py(稍后介绍)。主函数新建登陆对象,然后登陆。

2、WeiboLogin类(WeiboMain.py):

        print "Initializing WeiboLogin..."
        self.userName = user
        self.passWord = pwd
        self.enableProxy = enableProxy

        self.serverUrl = "http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=&rsakt=mod&client=ssologin.js(v1.4.11)&_=1379834957683"
        self.loginUrl = "http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.11)"
        self.postHeader = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0'}
</div>

初始化函数,定义了两个关键的url成员:self.serverUrl用于登陆的第一步(获取servertime、nonce等),这里的第一步实质包含了解析新浪微博的登录过程的1和2;self.loginUrl用于第二步(加密用户和密码后,POST给该URL,self.postHeader是POST的头信息),这一步对应于解析新浪微博的登录过程的3。类内函数还有3个:

        req = urllib2.Request(self.loginUrl, postData, self.postHeader)
        print "Posting request..."
        result = urllib2.urlopen(req)#登陆的第二步——解析新浪微博的登录过程中3
        text = result.read()
        try:
            loginUrl = WeiboSearch.sRedirectData(text)#解析重定位结果
              urllib2.urlopen(loginUrl)
        except:
            print 'Login error!'
            return False

        print 'Login sucess!'
        return True
</div>

self.EnableCookie用于设置cookie及代理服务器,网络上有很多免费的代理服务器,为防止新浪封IP,可以使用。然后使登陆的第一步,访问新浪服务器得到serverTime等信息,然后利用这些信息加密用户名和密码,构建POST请求;执行第二步,向self.loginUrl发送用户和密码,得到重定位信息后,解析得到最终跳转到的URL,打开该URL后,服务器自动将用户登陆信息写入cookie,登陆成功。

    if enableProxy:
        proxy_support = urllib2.ProxyHandler({'http':'http://xxxxx.pac'})#使用代理
         opener = urllib2.build_opener(proxy_support, cookie_support, urllib2.HTTPHandler)
        print "Proxy enabled"
    else:
        opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)

    urllib2.install_opener(opener)#构建cookie对应的opener
</div>

EnableCookie函数比较简单

    try:
        serverTime, nonce, pubkey, rsakv = WeiboSearch.sServerData(serverData)#解析得到serverTime,nonce等
         return serverTime, nonce, pubkey, rsakv
    except:
        print 'Get server time & nonce error!'
        return None
</div>

WeiboSearch文件中的函数主要用于解析从服务器得到的数据,比较简单。

3、sServerData函数(WeiboSearch.py):

def sServerData(serverData):
    "Search the server time & nonce from server data"

    p = re.compile('\((.*)\)')
    jsonData = p.search(serverData).group(1)
    data = json.loads(jsonData)
    serverTime = str(data['servertime'])
    nonce = data['nonce']
    pubkey = data['pubkey']#
    rsakv = data['rsakv']#
    print "Server time is:", serverTime
    print "Nonce is:", nonce
    return serverTime, nonce, pubkey, rsakv
</div>

解析过程主要使用了正则表达式和JSON,这部分比较容易理解。另外Login中解析重定位结果部分函数也在这个文件中如下:

代码如下:</div>

您可能想查找下面的文章:

  • 用Python编写简单的微博爬虫
  • 基于python编写的微博应用
  • Python 获取新浪微博的最新公共微博实例分享
  • 使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
  • python模拟新浪微博登陆功能(新浪微博爬虫)

相关文章

  • Python学习之asyncore模块用法实例教程
  • Python OS模块常用函数说明
  • 用map函数来完成Python并行任务的简单示例
  • Python利用IPython提高开发效率
  • python 远程统计文件代码分享
  • python解决Fedora解压zip时中文乱码的方法
  • 列举Python中吸引人的一些特性
  • python进阶教程之异常处理
  • python实用代码片段收集贴
  • 使用Python生成XML的方法实例

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • python使用心得之获得github代码库列表
    • python自动安装pip
    • Python fileinput模块使用实例
    • 跟老齐学Python之有容乃大的list(1)
    • Python学习之asyncore模块用法实例教程
    • Python中__call__用法实例
    • python检测远程服务器tcp端口的方法
    • 在Python中操作文件之truncate()方法的使用教程
    • python使用Queue在多个子进程间交换数据的方法
    • python网络编程之读取网站根目录实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有