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 相关文章推荐
Tornado服务器中绑定域名、虚拟主机的方法
Aug 22 Python
在Python的循环体中使用else语句的方法
Mar 30 Python
python中获得当前目录和上级目录的实现方法
Oct 12 Python
Python实现的redis分布式锁功能示例
May 29 Python
基于python代码实现简易滤除数字的方法
Jul 17 Python
Python中的 is 和 == 以及字符串驻留机制详解
Jun 28 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
Nov 29 Python
Python GUI自动化实现绕过验证码登录
Jan 10 Python
关于Keras模型可视化教程及关键问题的解决
Jan 24 Python
Python利用逻辑回归分类实现模板
Feb 15 Python
Django 解决开发自定义抛出异常的问题
May 21 Python
Python Opencv轮廓常用操作代码实例解析
Sep 01 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录入页面中动态从数据库中提取数据的实现
2006/10/09 PHP
PHP安装攻略:常见问题解答(二)
2006/10/09 PHP
discuz安全提问算法
2007/06/06 PHP
php流量统计功能的实现代码
2012/09/29 PHP
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
浅谈php中include文件变量作用域
2015/06/18 PHP
Yii2隐藏frontend/web和backend/web的方法
2015/12/12 PHP
PHP自定义函数实现数组比较功能示例
2017/10/19 PHP
PHP substr()函数参数解释及用法讲解
2017/11/23 PHP
使用JSON作为函数的参数的优缺点
2016/10/27 Javascript
Vue中fragment.js使用方法详解
2017/03/09 Javascript
JS实现json的序列化和反序列化功能示例
2017/06/13 Javascript
js异步编程小技巧详解
2017/08/14 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
微信小程序switch组件使用详解
2018/01/31 Javascript
Vue加载组件、动态加载组件的几种方式
2018/08/31 Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
2019/11/19 Javascript
Django URL传递参数的方法总结
2016/08/28 Python
Flask框架的学习指南之用户登录管理
2016/11/20 Python
Python搭建HTTP服务器和FTP服务器
2017/03/09 Python
彻底理解Python list切片原理
2017/10/27 Python
pandas把dataframe转成Series,改变列中值的类型方法
2018/04/10 Python
python简单验证码识别的实现方法
2019/05/10 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
2020/06/09 Python
Python如何重新加载模块
2020/07/29 Python
土耳其风格手工珠宝:Ottoman Hands
2019/07/26 全球购物
联想智利官方网站:Lenovo Chile
2020/06/03 全球购物
Prototype如何实现页面局部定时刷新
2013/08/06 面试题
怎样有效的进行自我评价
2013/10/06 职场文书
音乐学个人的自荐书范文
2013/11/26 职场文书
大学老师推荐信
2014/02/25 职场文书
五水共治捐款倡议书
2014/05/14 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
初中历史教学反思
2016/02/19 职场文书
MySQL Router的安装部署
2021/04/24 MySQL
Java日常练习题,每天进步一点点(38)
2021/07/26 Java/Android