• python核心类库:urllib使用详解


    python版本:2.7.15

    1.简单用法urllib.urlopen()

    语法:
    urllib.urlopen(url[, data[, proxies]]) :
    打开一个url的方法,返回一个文件对象,然后可以进行类似文件对象的操作。

    示例代码:
    googleResponse = urllib.urlopen('http://www.google.com.hk')
    print 'http header:/n', googleResponse.info()
    print 'http status:', googleResponse.getcode()
    print 'url:', googleResponse.geturl()
    # 读取html页面的第一行
    firstLine = googleResponse.readline()
    # 就像在操作本地文件
    for line in googleResponse:
    print line,
    googleResponse.close()

    urlopen返回对象提供方法:
    - read() , readline() ,readlines() , fileno() , close() :这些方法的使用方式与文件对象完全一样
    - info():返回一个httplib.HTTPMessage对象,表示远程服务器返回的头信息
    - getcode():返回Http状态码。如果是http请求,200请求成功完成;404网址未找到
    - geturl():返回请求的url

    2.存储为文件urllib.urlretrieve()
    语法:
    urllib.urlretrieve(url[,filename[,reporthook[,data]]])
    urlretrieve方法将url定位到的html文件下载到你本地的硬盘中。如果不指定filename,则会存为临时文件。
    urlretrieve()返回一个二元组(filename,mine_hdrs)

    临时存放:
    filename = urllib.urlretrieve('http://www.google.com.hk/')
    prtin type(filename)
    # <type 'tuple'>
    prtin filename[0]
    # '/tmp/tmp8eVLjq'
    print filename[1]
    # <httplib.HTTPMessage instance at 0xb6a363ec>

    存为本地文件:
    filename = urllib.urlretrieve('http://www.google.com.hk/',filename='/home/python/google.html')
    print type(filename)
    # <type 'tuple'>
    print filename[0]
    # '/home/python/google.html'
    print filename[1]
    # <httplib.HTTPMessage instance at 0xb6e2c38c>


    3.使用urllib实现post方法和get方法

    需要用到urllib.urlencode(query)将URL中的参数键值对以连接符&划分

    GET方法:
    import urllib
    params=urllib.urlencode({'name':'aaron','pwd':'123456','rem':0})
    print params
    # 'pwd=123456&name=aaron&rem=0'
    f=urllib.urlopen("http://dev.xxx.com/login?%s" % params)
    print f.read()

    POST方法:
    import urllib
    parmas = urllib.urlencode({'name':'aaron','pwd':'123456','rem':0})
    f=urllib.urlopen("http://dev.xxx.com/login",parmas)
    f.read()


    4.其它方法

    urllib.urlcleanup()
    清除由于urllib.urlretrieve()所产生的缓存

    urllib.quote(url)和urllib.quote_plus(url)
    将url数据获取之后,并将其编码,从而适用与URL字符串中,使其能被打印和被web服务器接受。
    print urllib.quote('http://www.baidu.com')
    # 'http%3A//www.baidu.com'
    print urllib.quote_plus('http://www.baidu.com')
    # 'http%3A%2F%2Fwww.baidu.com'

    urllib.unquote(url)和urllib.unquote_plus(url)
    与urllib.quote(url)和urllib.quote_plus(url)函数相反。

    done!

  • 相关阅读:
    28. Implement strStr()(KMP字符串匹配算法)
    60. Permutation Sequence(求全排列的第k个排列)
    47. Permutations II (全排列有重复的元素)
    46. Permutations (全排列)
    3. Longest Substring Without Repeating Characters(最长子串,双指针+hash)
    Python 一行代码实现并行
    1. Two Sum
    236. Lowest Common Ancestor of a Binary Tree(最低公共祖先,难理解)
    ssm项目配置多个数据源
    SpringMVC架构实现原理
  • 原文地址:https://www.cnblogs.com/zqifa/p/python-urllib-1.html
Copyright © 2020-2023  润新知