分享一个常用的Python模拟登陆类


Posted in Python onMarch 29, 2015

代码非常简单,而且注释也很详细,这里就不多废话了

tools.py

# -*- coding:utf8 -*-
'''
# =============================================================================
#   FileName: tools.py
#     Desc: 模拟浏览器
#    Author: cosven
#     Email: yinshaowen241@gmail.com
#   HomePage: www.cosven.com
#    Version: 0.0.1
#  LastChange: 2015-03-27 00:59:24
#    History:
# =============================================================================
'''
 
 
import urllib
import urllib2
import cookielib
 
 
class MyWeb():
  """
    模拟一个浏览器
  """
  def __init__(self):
    self.header = {
      'Host': 'music.163.com',
      'Content-Type': "application/x-www-form-urlencoded; charset=UTF-8",
      'Referer': 'http://music.163.com/song?id=26599525',
      "User-Agent": "Opera/8.0 (Macintosh; PPC Mac OS X; U; en)"
    }
    self.cookie = cookielib.LWPCookieJar()
    self.cookie_support = urllib2.HTTPCookieProcessor(self.cookie)
    self.opener = urllib2.build_opener(self.cookie_support,
                      urllib2.HTTPHandler)
    urllib2.install_opener(self.opener)
 
  def post(self, posturl, dictdata):
    """
    模拟post请求
 
    :param string posturl: url地址
    :param dict dictdata: 发送的数据
    """
 
    postdata = urllib.urlencode(dictdata)
    request = urllib2.Request(posturl, postdata, self.header)
    try:
      content = urllib2.urlopen(request)
      return content
    except Exception, e:
      print ("post:" + str(e))
      return None
 
  def get(self, url):
    """
    模拟get请求
 
    :param url: url地址
    :return content: 常使用read的方法来读取返回数据
    :rtype : instance or None
    """
    request = urllib2.Request(url, None, self.header)
    try:
      content = urllib2.urlopen(request)
      return content
    except Exception, e:
      print ("open:" + str(e))
      return None
 
 
if __name__ == "__main__":
  import hashlib
  web = MyWeb()
  url = 'http://music.163.com/api/login/'
  data = {
    'username': 'username', # email
    'password': hashlib.md5('password').hexdigest(), # password
    'rememberLogin': 'true'
  }
  res = web.post(url, data)
  print res.read()
  # url_add = 'http://music.163.com/api/playlist/manipulate/tracks'
  # data_add = {
  #   'tracks': '26599525', # music id
  #   'pid': '16199365',  # playlist id
  #   'trackIds': '["26599525"]', # music id str
  #   'op': 'add'  # opation
  # }
  # res_add = web.post(url_add, data_add)
  # print res_add.read()
 
  # 完了可以试着查看自己网易云音乐相应列表歌曲

以上就是本文给大家分享的代码了,希望大家能够喜欢,也希望能够对大家学习Python有所帮助。

Python 相关文章推荐
python新手经常遇到的17个错误分析
Jul 30 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
Oct 13 Python
Python reduce()函数的用法小结
Nov 15 Python
Python logging管理不同级别log打印和存储实例
Jan 19 Python
pycharm运行程序时在Python console窗口中运行的方法
Dec 03 Python
Python标准库使用OrderedDict类的实例讲解
Feb 14 Python
Python实现将HTML转成PDF的方法分析
May 04 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
Jul 04 Python
python神经网络编程实现手写数字识别
May 27 Python
python 实现围棋游戏(纯tkinter gui)
Nov 13 Python
基于Django集成CAS实现流程详解
Nov 28 Python
浅析Python中的套接字编程
Jun 22 Python
python实现查询IP地址所在地
Mar 29 #Python
python实现定时播放mp3
Mar 29 #Python
Python实现设置windows桌面壁纸代码分享
Mar 28 #Python
Python中的类与对象之描述符详解
Mar 27 #Python
深入理解Javascript中的this关键字
Mar 27 #Python
Python运用于数据分析的简单教程
Mar 27 #Python
Python中下划线的使用方法
Mar 27 #Python
You might like
星际争霸, 教主第一视角, ZvT经典龙蛇演义
2020/03/02 星际争霸
PHP 数组遍历顺序理解
2009/09/09 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
PHP添加图片水印、压缩、剪切的封装类
2015/08/17 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
深入认识JavaScript中的函数
2007/01/22 Javascript
12个非常有创意的JavaScript小游戏
2010/03/18 Javascript
编写Js代码要注意的几条规则
2010/09/10 Javascript
javascript 密码框防止用户粘贴和复制的实现代码
2014/02/17 Javascript
Javascript基础教程之switch语句
2015/01/18 Javascript
基于jQuery实现左右图片轮播(原理通用)
2015/12/24 Javascript
不得不分享的JavaScript常用方法函数集(下)
2015/12/25 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
2016/07/24 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
ES2015 Symbol 一种绝不重复的值
2016/12/25 Javascript
JS算法题之查找数字在数组中的索引位置
2019/05/15 Javascript
基于layui的下拉列表的数据回显方法
2019/09/24 Javascript
javascript实现文字跑马灯效果
2020/06/18 Javascript
浅谈javascript如何获取文件后缀名
2020/08/07 Javascript
JS实现按比例缩小图片宽高
2020/08/24 Javascript
[02:05]DOTA2完美大师赛趣味视频之看我表演
2017/11/18 DOTA
[36:19]2018DOTA2亚洲邀请赛 小组赛 A组加赛 Newbee vs LGD
2018/04/03 DOTA
Flask入门教程实例:搭建一个静态博客
2015/03/27 Python
Python实现通讯录功能
2018/02/22 Python
python 2.7.14安装图文教程
2018/04/08 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
2018/08/31 Python
如何获取Python简单for循环索引
2019/11/21 Python
英国最大的在线快递公司之一:ParcelHero
2019/11/04 全球购物
英语专业毕业生自我鉴定
2013/11/09 职场文书
初中语文教学反思
2014/02/02 职场文书
2014年教师党员自我评议
2014/09/19 职场文书
房屋转让协议书
2014/10/18 职场文书
教师听课评语大全
2014/12/31 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
nginx proxy_cache 缓存配置详解
2021/03/31 Servers