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中使用base64模块处理字符编码的教程
Apr 28 Python
Python使用Beautiful Soup包编写爬虫时的一些关键点
Jan 20 Python
Python中set与frozenset方法和区别详解
May 23 Python
python基础教程之分支、循环简单用法
Jun 16 Python
asyncio 的 coroutine对象 与 Future对象使用指南
Sep 11 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
Nov 02 Python
python解决pandas处理缺失值为空字符串的问题
Apr 08 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
Dec 07 Python
使用python将excel数据导入数据库过程详解
Aug 27 Python
关于Python3 lambda函数的深入浅出
Nov 27 Python
Python2.x与3​​.x版本有哪些区别
Jul 09 Python
详解使用python爬取抖音app视频(appium可以操控手机)
Jan 26 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快速url重写更新版[需php 5.30以上]
2010/04/25 PHP
下拉列表多级联动dropDownList示例代码
2013/06/27 PHP
php模拟用户自动在qq空间发表文章的方法
2015/01/07 PHP
PHP处理会话函数大总结
2015/08/05 PHP
jQueryPad 实用的jQuery测试工具(支持IE,chrome,FF)
2010/05/22 Javascript
一个关于jqGrid使用的小例子(行按钮)
2011/11/04 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
JavaScript中的console.time()函数详细介绍
2014/12/29 Javascript
JS实现鼠标点击展开或隐藏表格行的方法
2015/03/03 Javascript
在JavaScript应用中使用RequireJS来实现延迟加载
2015/07/01 Javascript
全面介绍javascript实用技巧及单竖杠
2016/07/18 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
2016/10/30 Javascript
javascript实现非常简单的小数取整功能示例
2017/06/13 Javascript
vue动态路由实现多级嵌套面包屑的思路与方法
2017/08/16 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
理顺8个版本vue的区别(小结)
2018/09/17 Javascript
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
2018/09/26 Javascript
swiper.js插件实现pc端文本上下滑动功能示例
2018/12/03 Javascript
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
解决Vue项目中tff报错的问题
2020/10/21 Javascript
Python操作json数据的一个简单例子
2014/04/17 Python
python 多线程串行和并行的实例
2019/02/22 Python
在Python中如何传递任意数量的实参的示例代码
2019/03/21 Python
Python threading的使用方法解析
2019/08/28 Python
opencv resize图片为正方形尺寸的实现方法
2019/12/26 Python
python爬虫泛滥的解决方法详解
2020/11/25 Python
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
纬创Java面试题笔试题
2014/10/02 面试题
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2016/01/06 面试题
Prototype中如何为一个元素添加一个方法
2014/12/08 面试题
人事专员工作职责
2014/02/22 职场文书
2014年村官工作总结
2014/11/24 职场文书
开票员岗位职责
2015/02/12 职场文书
小学推普周活动总结
2015/05/07 职场文书
Vue3.0 手写放大镜效果
2021/07/25 Vue.js
Python Matplotlib绘制等高线图与渐变色扇形图
2022/04/14 Python