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+django实现文件上传
Jan 17 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
Jan 24 Python
python判断一个集合是否为另一个集合的子集方法
May 04 Python
python3使用SMTP发送简单文本邮件
Jun 19 Python
django orm 通过related_name反向查询的方法
Dec 15 Python
Python转换itertools.chain对象为数组的方法
Feb 07 Python
详解Python中的分支和循环结构
Feb 11 Python
打包PyQt5应用时的注意事项
Feb 14 Python
浅谈python3打包与拆包在函数的应用详解
May 02 Python
Python descriptor(描述符)的实现
Nov 15 Python
python实现计算器简易版
Dec 17 Python
Python学习之时间包使用教程详解
Mar 21 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 adodb操作mysql数据库
2009/03/19 PHP
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
2011/05/04 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
2014/11/03 PHP
java模拟PHP的pack和unpack类
2016/04/13 PHP
php mysql_list_dbs()函数用法示例
2017/03/29 PHP
jQuery ajax BUG:object doesn't support this property or method
2010/07/06 Javascript
js将当前时间格式转换成时间搓(自写)
2013/09/26 Javascript
利用javascript数组长度循环数组内所有元素
2013/12/27 Javascript
nodejs实现获取某宝商品分类
2015/05/28 NodeJs
详解JS正则replace的使用方法
2016/03/06 Javascript
Nodejs学习item【入门手上】
2016/05/05 NodeJs
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
2016/05/16 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
pageGroup.js实现分页功能
2019/07/27 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
[07:03]显微镜下的DOTA2第九期——430圣堂刺客杀戮秀
2014/06/20 DOTA
python实现红包裂变算法
2016/02/16 Python
python学习教程之使用py2exe打包
2017/09/24 Python
Python2中文处理纪要的实现方法
2018/03/10 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
2019/07/25 Python
Python如何用filter函数筛选数据
2020/03/05 Python
基于PyQT实现区分左键双击和单击
2020/05/19 Python
python3爬虫中异步协程的用法
2020/07/10 Python
Python绘制组合图的示例
2020/09/18 Python
Canvas在超级玛丽游戏中的应用详解
2021/02/06 HTML / CSS
米兰必去买手店排行榜首位:Antonioli
2016/09/11 全球购物
世界上最大的餐具公司:Oneida
2016/12/17 全球购物
50岁生日感言
2014/01/23 职场文书
法定授权委托证明书
2014/09/27 职场文书
党的群众路线批评与自我批评范文
2014/10/16 职场文书
运动会广播稿20字
2015/08/19 职场文书
2016年敬老月活动总结
2016/04/05 职场文书
Python面向对象之成员相关知识总结
2021/06/24 Python
Java完整实现记事本代码
2022/06/16 Java/Android