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 subprocess模块学习总结
Mar 13 Python
Python ValueError: invalid literal for int() with base 10 实用解决方法
Jun 21 Python
详解Python多线程
Nov 14 Python
python 系统调用的实例详解
Jul 11 Python
Python 模拟员工信息数据库操作的实例
Oct 23 Python
python简单实例训练(21~30)
Nov 15 Python
Python3 循环语句(for、while、break、range等)
Nov 20 Python
解决PyCharm的Python.exe已经停止工作的问题
Nov 29 Python
Django框架基础模板标签与filter使用方法详解
Jul 23 Python
Python改变对象的字符串显示的方法
Aug 01 Python
搭建pypi私有仓库实现过程详解
Nov 25 Python
浅析Python 中的 WSGI 接口和 WSGI 服务的运行
Dec 09 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
比file_get_contents稳定的curl_get_contents分享
2012/01/11 PHP
Server.HTMLEncode让代码在页面里显示为源代码
2013/12/08 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
2015/08/23 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
JavaScript开发时的五个注意事项
2007/12/08 Javascript
网页禁用右键实现代码(JavaScript代码)
2009/10/29 Javascript
node.js 一个简单的页面输出实现代码
2012/03/07 Javascript
JavaScript中__proto__与prototype的关系深入理解
2012/12/04 Javascript
js动态创建表格,删除行列的小例子
2013/07/20 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
2015/02/26 Javascript
JS根据生日算年龄的方法
2015/05/05 Javascript
js随机生成26个大小写字母
2016/02/12 Javascript
JavaScript  cookie 跨域访问之广告推广
2016/04/20 Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
2016/11/04 Javascript
Vue2.0父子组件传递函数的教程详解
2017/10/16 Javascript
AngularJS 应用模块化的使用
2018/04/04 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
2018/08/24 Javascript
vue递归组件实战之简单树形控件实例代码
2019/08/27 Javascript
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
numpy.random.seed()的使用实例解析
2018/02/03 Python
python奇偶行分开存储实现代码
2018/03/19 Python
解析Python3中的Import
2019/10/13 Python
python单向循环链表原理与实现方法示例
2019/12/03 Python
python pprint模块中print()和pprint()两者的区别
2020/02/10 Python
Python实现一个简单的毕业生信息管理系统的示例代码
2020/06/08 Python
PyQt中使用QtSql连接MySql数据库的方法
2020/07/28 Python
Python 2.6.6升级到Python2.7.15的详细步骤
2020/12/14 Python
css 省略号 css3让多余的字符串消失并附加省略号的实现代码
2013/02/07 HTML / CSS
Get The Label中文官网:英国运动时尚购物平台
2017/04/19 全球购物
意大利网上书店:LaFeltrinelli
2020/06/12 全球购物
九年级语文教学反思
2014/02/04 职场文书
员工入职担保书范文
2014/04/01 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
基于Go Int转string几种方式性能测试
2021/04/28 Golang
Win10 最新稳定版本 21H2开始推送
2022/04/19 数码科技