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 相关文章推荐
netbeans7安装python插件的方法图解
Dec 24 Python
在Python中处理字符串之isdigit()方法的使用
May 18 Python
Python正则获取、过滤或者替换HTML标签的方法
Jan 28 Python
bat和python批量重命名文件的实现代码
May 19 Python
Python科学计算之NumPy入门教程
Jan 15 Python
python3 shelve模块的详解
Jul 08 Python
python出现"IndentationError: unexpected indent"错误解决办法
Oct 15 Python
使用Pyinstaller的最新踩坑实战记录
Nov 08 Python
Python浅复制中对象生存周期实例分析
Apr 02 Python
Python 给某个文件名添加时间戳的方法
Oct 16 Python
Python基于scipy实现信号滤波功能
May 08 Python
Python实现日志实时监测的示例详解
Apr 06 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 仿Comsenz安装效果代码打包提供下载
2010/05/09 PHP
php 函数中使用static的说明
2012/06/01 PHP
sql注入与转义的php函数代码
2013/06/17 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
Wordpress ThickBox 添加“查看原图”效果代码
2010/12/11 Javascript
JS中confirm,alert,prompt函数区别分析
2011/01/17 Javascript
js简易namespace管理器 实例代码
2013/06/21 Javascript
使用jQuery插件创建常规模态窗口登陆效果
2013/08/23 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
2015/03/30 Javascript
深入理解JS函数的参数(arguments)的使用
2016/05/28 Javascript
nodejs读写json文件的简单方法(必看)
2017/03/09 NodeJs
Vue.js搭建移动端购物车界面
2020/06/28 Javascript
使用vue实现grid-layout功能实例代码
2018/01/05 Javascript
Vue中控制v-for循环次数的实现方法
2018/09/26 Javascript
你应该了解的JavaScript Array.map()五种用途小结
2018/11/14 Javascript
vue router 用户登陆功能的实例代码
2019/04/24 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
2020/11/05 Javascript
Python中的类与对象之描述符详解
2015/03/27 Python
Python实现的数据结构与算法之快速排序详解
2015/04/22 Python
Python实现列表转换成字典数据结构的方法
2016/03/11 Python
Pycharm学习教程(2) 代码风格
2017/05/02 Python
基于torch.where和布尔索引的速度比较
2020/01/02 Python
Jupyter Notebook折叠输出的内容实例
2020/04/22 Python
Python类class参数self原理解析
2020/11/19 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
2021/02/24 Python
html5启动原生APP总结
2020/07/03 HTML / CSS
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
酒店管理毕业生自荐信
2013/10/24 职场文书
安卓程序员求职信
2014/02/28 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
2014年机关后勤工作总结
2014/12/16 职场文书
2015年党务公开工作总结
2015/05/19 职场文书
网络营销实训总结
2015/08/03 职场文书
2016春季校长开学典礼致辞
2015/11/26 职场文书
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
2022/05/30 NodeJs