python中urllib模块用法实例详解


Posted in Python onNovember 19, 2014

本文实例讲述了python中urllib模块用法。分享给大家供大家参考。具体分析如下:

一、问题:

近期公司项目的需求是根据客户提供的api,我们定时去获取数据, 之前的方案是用php收集任务存入到redis队列,然后在linux下做一个常驻进程跑某一个php文件, 该php文件就一个无限循环,判断redis队列,有就执行,没有就break.

二、解决方法:

最近刚好学了一下python, python的urllib模块或许比php的curl更快,而且简单. 贴一下代码

#_*_ coding:utf-8 _*_

import sys

reload(sys)

sys.setdefaultencoding( "utf-8" )

import os

import json

from urllib import urlopen

doc = urlopen("http://xxxx?webid=1&tid=901&cateid=101").read()

doc = json.loads(doc)

print doc

print doc.keys()

print doc["msg"]

print doc['data']

print doc['ret']

发现第一次访问所需要的时间为[Finished in 3.0s]
而第二次访问的时间为[Finished in 0.2s]
可见python的urllib模块是加有缓存的
urllib/2用法典型的例子
    import urllib2

    import cookielib

    import urllib
    class Hi_login:

        def __init__(self):

            cookie = cookielib.CookieJar()

            self.cookie = urllib2.HTTPCookieProcessor(cookie) ##### 生成cookie ###
        def login(self,user,pwd):

            url='http://passport.baidu.com/?login'

            postdata=urllib.urlencode({

          'mem_pass':'on',

        

          'password':pwd

           'Submit':'',

          'tpl':'sp',

          'tp_reg':'sp',

          'u' :'http://hi.baidu.com',

          'username':user})

            ### proxy_support = urllib2.ProxyHandler({"http":"http://ahad-haam:3128"}) 然后加入opener方法里####

            opener = urllib2.build_opener(self.cookie) ### 使用cookie ###

            headers = { ####### dict结构,可以加入x-forward-for甚至refer等 #######

           'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}

            urllib2.install_opener(opener)

            request = urllib2.Request(url,urllib.urlencode(postdata),headers = headers)

            urllib2.urlopen(request)

    if __name__=='__main__':

       pwd='123456'

       user='xiaofu'

       test=Hi_login()

       test.login(user,pwd)

假如访问需要认证的页面比如nagios监控页面等,
    import urllib2

    password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()

    url = "http://202.1.x.y/nagios"

    password_mgr.add_password(None, url, user='abc',passwd='xxxxxx')

    handler = urllib2.HTTPBasicAuthHandler(password_mgr)

    opener = urllib2.build_opener(handler)

    urllib2.install_opener(opener)

    f=urllib2.urlopen(url)

    print f.code

返回结果200,否则就是401认证错误

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python解析模块(ConfigParser)使用方法
Dec 10 Python
用Python展示动态规则法用以解决重叠子问题的示例
Apr 02 Python
Python3.2中Print函数用法实例详解
May 19 Python
Python使用urllib2模块抓取HTML页面资源的实例分享
May 03 Python
利用python批量给云主机配置安全组的方法教程
Jun 21 Python
Python实现mysql数据库更新表数据接口的功能
Nov 19 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
Jan 08 Python
python tools实现视频的每一帧提取并保存
Mar 20 Python
Python搭建代理IP池实现检测IP的方法
Oct 27 Python
python如何基于redis实现ip代理池
Jan 17 Python
python工具——Mimesis的简单使用教程
Jan 16 Python
Python编解码问题及文本文件处理方法详解
Jun 20 Python
python统计一个文本中重复行数的方法
Nov 19 #Python
python通过zlib实现压缩与解压字符串的方法
Nov 19 #Python
python判断字符串是否纯数字的方法
Nov 19 #Python
python使用any判断一个对象是否为空的方法
Nov 19 #Python
python编写暴力破解FTP密码小工具
Nov 19 #Python
用python读写excel的方法
Nov 18 #Python
kNN算法python实现和简单数字识别的方法
Nov 18 #Python
You might like
PHP中文件读、写、删的操作(PHP中对文件和目录操作)
2012/03/06 PHP
php中3des加密代码(完全与.net中的兼容)
2012/08/02 PHP
PHP中exec函数和shell_exec函数的区别
2014/08/20 PHP
php通过淘宝API查询IP地址归属等信息
2015/12/25 PHP
本地对象Array的原型扩展实现代码
2010/12/04 Javascript
jQuery 操作option的实现代码
2011/03/03 Javascript
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
2011/10/21 Javascript
IE8中使用javascript动态加载CSS的解决方法
2014/06/17 Javascript
JS简单实现多级Select联动菜单效果代码
2015/09/06 Javascript
JavaScript实现弹出模态窗体并接受传值的方法
2016/02/12 Javascript
基于jQuery Ajax实现上传文件
2016/03/24 Javascript
Node.js 应用跑得更快 10 个技巧
2016/04/03 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
基于vue2.0+vuex的日期选择组件功能实现
2017/03/13 Javascript
微信小程序后台解密用户数据实例详解
2017/06/28 Javascript
jQuery实现简单日期格式化功能示例
2017/09/19 jQuery
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
react配合antd组件实现的管理系统示例代码
2018/04/24 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
简单的三步vuex入门
2018/05/20 Javascript
详解vue中使用axios对同一个接口连续请求导致返回数据混乱的问题
2019/11/06 Javascript
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
vue实现按钮切换图片
2021/01/20 Vue.js
python3使用smtplib实现发送邮件功能
2018/05/22 Python
python ddt数据驱动最简实例代码
2019/02/22 Python
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
Charles&Keith美国官方网站:新加坡快时尚鞋类和配饰零售商
2019/11/27 全球购物
城市精细化管理实施方案
2014/03/04 职场文书
超市中秋节促销方案
2014/03/21 职场文书
建筑工程专业大学生求职信
2014/04/23 职场文书
绿色环保演讲稿
2014/05/10 职场文书
作风大整顿心得体会
2014/09/10 职场文书
党章学习心得体会2016
2016/01/14 职场文书
Flink 侧流输出源码示例解析
2022/09/23 Servers