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中使用列表生成式的教程
Apr 27 Python
浅谈python字符串方法的简单使用
Jul 18 Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
Oct 12 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
May 03 Python
pandas 选择某几列的方法
Jul 03 Python
如何用Python制作微信好友个性签名词云图
Jun 28 Python
Python分割训练集和测试集的方法示例
Sep 19 Python
Python爬取爱奇艺电影信息代码实例
Nov 26 Python
在OpenCV里实现条码区域识别的方法示例
Dec 04 Python
tensorflow没有output结点,存储成pb文件的例子
Jan 04 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
Jun 02 Python
python openCV实现摄像头获取人脸图片
Aug 20 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
BBS(php & mysql)完整版(五)
2006/10/09 PHP
Php Cookie的一个使用注意点
2008/11/08 PHP
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
IOS 开发之NSDictionary转换成JSON字符串
2017/08/14 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
2019/05/06 PHP
JavaScript 字符编码规则
2009/05/04 Javascript
Javascript 中的 call 和 apply使用介绍
2012/02/22 Javascript
屏蔽相应键盘按钮操作
2014/03/10 Javascript
jquery scroll()区分横向纵向滚动条的方法
2014/04/04 Javascript
jquery实现的下拉和收缩效果示例
2014/08/21 Javascript
jQuery实现点击该行即可删除HTML表格行
2014/10/17 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
php常见的页面跳转方法汇总
2015/04/15 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
2015/10/27 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
JS中对Cookie的操作详解
2016/08/05 Javascript
利用jquery获取select下拉框的值
2016/11/23 Javascript
js实现定时进度条完成后切换图片
2017/01/04 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
vue项目部署到Apache服务器中遇到的问题解决
2018/08/24 Javascript
vue监听input标签的value值方法
2018/08/27 Javascript
[02:23]2016国际邀请赛中国区预选赛wings晋级之路
2016/06/29 DOTA
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
剖析Django中模版标签的解析与参数传递
2015/07/21 Python
python类的实例化问题解决
2019/08/31 Python
Python Tensor FLow简单使用方法实例详解
2020/01/14 Python
pytorch 修改预训练model实例
2020/01/18 Python
英国50岁以上人群的交友网站:Ourtime
2018/03/28 全球购物
大学生毕业自我评价范文分享
2013/11/07 职场文书
历史系自荐信范文
2013/12/24 职场文书
2014年最新领导班子整改方案
2014/09/27 职场文书
2014年卫生院工作总结
2014/12/03 职场文书
对外汉语教师推荐信
2015/03/27 职场文书
民事代理词范文
2015/05/25 职场文书
实验心得体会范文
2016/01/25 职场文书
centos8安装nginx1.9.1的详细过程
2021/08/02 Servers