zoukankan      html  css  js  c++  java
  • python变现实现新浪微博登陆

    新浪微博的登陆现在是越来越那个了,以前的模拟浏览器登陆新浪微博貌似也越来不管用了

    登陆信息由以前的form变成了现在javascript,javascript的加载居然用了一个javascript的函数加载,真是。。。。。

    可是突然发现,新浪微博的加强仅限于微博,其他的新浪产品还是一般的网页

    相信大家也知道,只要在一个新浪的产品登陆,然后自然的就可以不用登陆就可以登陆上其他产品了

    1:安装python的模拟浏览器module,这里用的是mechanize,自己百度下载安装就好了,这不懂的话没必要继续看下去了(开玩笑,可以评论,我教你^_^)

    2:登陆新浪通行证

    3:登陆新浪微博

    4:在新浪微博中搜索

    在最后有我自己实现的python代码:

    这里说点其他的:

    1:怎么拿到自己浏览器的cookie,我拿chrome浏览器作为例子:

      打开http://login.sina.com.cn/signup/signin.php?entry=sso,按下F12,点network,然后输入账号密码登陆,加载完后点击左边的链接,然后右边的点击headers,找到cookie填到下面代码的对应cookie的位置就好了

    2:登陆新浪微博一般是扒数据,微博的搜索框是一个重要来源,不拿发现,中文的搜索中的中文是经过编码的,自己对比一般网页的url编码,不难发现新浪微博的url编码对中文的utf8编码还加了25,自己加上就好了

    3:其他的也没什么难的了,

    #*-* coding:utf-8 *-*
    import mechanize
    import cookielib
    import urllib
    import sys
    br = mechanize.Browser()
    
    #cookie jar
    cj = cookielib.LWPCookieJar()
    br.set_cookiejar(cj)
    #加上各种协议
    br.set_handle_equiv(True)
    br.set_handle_gzip(True)
    br.set_handle_redirect(True)
    br.set_handle_referer(True)
    br.set_handle_robots(False)
    
    br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(),max_time=1)
    #加上自己浏览器头部,和登陆了通行证的cookie
    br.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36'),
    ('Cookie','在这里把自己的cookie放在这里,很长的一串东西')
    ]
    
    # for f in br.forms():
    #     print f
    # br.select_form(nr=0)
    # print br
    # br.form['username']='13580491531'
    # br.form['password']='buhui1314iliting'
    # br.submit()
    # br.add_password('http://login.sina.com.cn/signup/signin.php?entry=sso','13580491531','buhui1314iliting')
    #登陆新浪通行证
    br.open('http://login.sina.com.cn/signup/signin.php?entry=sso')
    
    t = br.response().read()
    f = open("ht.html","w")
    f.write(t)
    f.close()
    #登陆新浪微博 
    br.open('http://weibo.com')
    t = br.response().read()
    f = open("htm.html","w")
    f.write(t)
    f.close()
    #输入查询关键字
    tips='请输入查询关键词,按回车键结束:'
    # tips = tips.decode('utf-8')
    query = raw_input(tips)
    #对查询进行url的utf8编码,中文才需要编码,英文不需要
    #sys.stdin.encoding表示系统默认的编码
    query = urllib.quote(query.decode(sys.stdin.encoding).encode('utf8'))
    #新浪微博的查询是在url的utf8编码的基础上在%后加上25
    query = query.replace('%','%25')
    #print query
    br.open('http://s.weibo.com/weibo/'+query)
    print br.response().geturl()
    t = br.response().read()
    f = open("html.html","w")
    f.write(t)
    f.close()
  • 相关阅读:
    区块链钱包应用如何开发
    区块链钱包开发什么是区块链钱包
    FileFilter, FilenameFilter用法和文件排序
    买了个空间玩
    MapReduce
    Java学习笔记六:多态
    Java学习笔记五:复用类
    Java学习笔记二:初始化(三)
    Java学习笔记二:初始化(二)
    Java学习笔记四:static关键字
  • 原文地址:https://www.cnblogs.com/qwj-sysu/p/3854260.html
Copyright © 2011-2022 走看看