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 while、for、生成器、列表推导等语句的执行效率测试
Jun 03 Python
Python正则表达式匹配中文用法示例
Jan 17 Python
Python学习笔记之open()函数打开文件路径报错问题
Apr 28 Python
Django项目中model的数据处理以及页面交互方法
May 30 Python
对IPython交互模式下的退出方法详解
Feb 16 Python
python3模拟实现xshell远程执行liunx命令的方法
Jul 12 Python
使用python写的opencv实时监测和解析二维码和条形码
Aug 14 Python
Django中使用haystack+whoosh实现搜索功能
Oct 08 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
Jan 14 Python
Python坐标轴操作及设置代码实例
Jun 04 Python
Python descriptor(描述符)的实现
Nov 15 Python
如何在Python中妥善使用进度条详解
Apr 05 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验证码函数的使用示例
2013/05/03 PHP
mac环境中使用brew安装php5.5.15
2014/08/18 PHP
PHP合并数组的2种方法小结
2016/11/24 PHP
laravel5实现微信第三方登录功能
2018/12/06 PHP
PHP levenshtein()函数用法讲解
2019/03/08 PHP
js 获取子节点函数 (兼容FF与IE)
2010/04/18 Javascript
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
JavaScript中利用各种循环进行遍历的方式总结
2015/11/10 Javascript
JS简单模拟触发按钮点击功能的方法
2015/11/30 Javascript
JavaScript实现Base64编码转换
2016/04/23 Javascript
bootstrap 设置checkbox部分选中效果
2017/04/20 Javascript
Require.JS中的几种define定义方式示例
2017/06/01 Javascript
js定时器实现倒计时效果
2017/11/05 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
2017/11/24 Javascript
vue中监听路由参数的变化及方法
2019/12/06 Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
2020/09/11 Javascript
[01:50]WODOTA制作 DOTA2中文宣传片《HERO》
2013/04/28 DOTA
[03:24]CDEC.Y赛前采访 努力备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
Python访问纯真IP数据库脚本分享
2015/06/29 Python
结合Python的SimpleHTTPServer源码来解析socket通信
2016/06/27 Python
python文件特定行插入和替换实例详解
2017/07/12 Python
Python设计模式之门面模式简单示例
2018/01/09 Python
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
解决django前后端分离csrf验证的问题
2019/02/03 Python
Python 绘制酷炫的三维图步骤详解
2019/07/12 Python
简单了解python变量的作用域
2019/07/30 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
2020/06/03 Python
整理HTML5移动端开发的常用触摸事件
2016/04/15 HTML / CSS
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
女士鞋子、包包和服装在线,第一款10美元:ShoeDazzle
2019/07/26 全球购物
给物业的表扬信
2014/01/21 职场文书
狼和鹿教学反思
2014/02/05 职场文书
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle
浅析python中特殊文件和特殊函数
2022/02/24 Python