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使用实例
Apr 13 Python
Python实现二分查找算法实例
May 26 Python
利用python将json数据转换为csv格式的方法
Mar 22 Python
python矩阵转换为一维数组的实例
Jun 05 Python
Python实现压缩文件夹与解压缩zip文件的方法
Sep 01 Python
深入浅析Python2.x和3.x版本的主要区别
Nov 30 Python
在unittest中使用 logging 模块记录测试数据的方法
Nov 30 Python
利用pyinstaller打包exe文件的基本教程
May 02 Python
在Python中利用pickle保存变量的实例
Dec 30 Python
pyinstaller将含有多个py文件的python程序做成exe
Apr 29 Python
Pandas读取csv时如何设置列名
Jun 02 Python
python实现canny边缘检测
Sep 14 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解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
2014/06/19 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
phpstudy的php版本自由修改的方法
2017/10/18 PHP
php实现微信支付之现金红包
2018/05/30 PHP
JS函数重载的解决方案
2014/05/13 Javascript
js创建表单元素并使用submit进行提交
2014/08/14 Javascript
Node.js操作mysql数据库增删改查
2016/03/30 Javascript
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
用Vue.js实现监听属性的变化
2016/11/17 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
基于AngularJS实现的工资计算器实例
2017/06/16 Javascript
用Axios Element实现全局的请求loading的方法
2018/03/15 Javascript
从Vuex中取出数组赋值给新的数组,新数组push时报错的解决方法
2018/09/18 Javascript
深入理解react-router 路由的实现原理
2018/09/26 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
2019/10/31 Javascript
基于JavaScript实现控制下拉列表
2020/05/08 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
pygame学习笔记(6):完成一个简单的游戏
2015/04/15 Python
python cx_Oracle的基础使用方法(连接和增删改查)
2017/11/19 Python
Python中作用域的深入讲解
2018/12/10 Python
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
python启动应用程序和终止应用程序的方法
2019/06/28 Python
Python 依赖库太多了该如何管理
2019/11/08 Python
python二元表达式用法
2019/12/04 Python
Django Haystack 全文检索与关键词高亮的实现
2020/02/17 Python
收藏!10个免费高清视频素材网站!【设计、视频剪辑必备】
2021/03/18 杂记
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
大学生创业感言
2014/01/25 职场文书
九九重阳节标语
2014/10/07 职场文书
违章停车检讨书
2014/10/21 职场文书
护士业务学习心得体会
2016/01/25 职场文书
旅游安全责任协议书
2016/03/22 职场文书
Python NumPy灰度图像的压缩原理讲解
2021/08/04 Python
react中useState使用:如何实现在当前表格直接更改数据
2022/08/05 Javascript