zoukankan      html  css  js  c++  java
  • python中urllib的整理

    本不想使用这个玩意,奈何看到很多地方使用,随手整理下

    urllib模块提供的urlretrieve()函数,urlretrieve()方法直接将远程数据下载到本地

    urlretrieve(url, filename=None, reporthook=None, data=None)。
    • 参数filename指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。)
    • 参数reporthook是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度
    • 参数data指post导服务器的数据,该方法返回一个包含两个元素的(filename, headers) 元组,filename 表示保存到本地的路径,header表示服务器的响应头
    urlopen一般常用的有三个参数:
    urllib.requeset.urlopen(url,data,timeout)
            url:  需要打开的网址
            data:Post提交的数据
            timeout:设置网站的访问超时时间
    urlopen返回对象提供一些基本方法(快速请求)
    read() :返回文本数据
    readline():返回一行
    info():表示远程服务器返回的头信息。
    getcode():返回Http状态码,如果是http请求,200表示请求成功完成;404表示网址未找到。
    geturl():返回请求的url。
    直接用urllib.request模块的urlopen()获取页面,req的数据格式为bytes类型,需要decode()解码,转换成str类型
    import urllib.request
    import re
    url = 'http://tieba.baidu.com/p/2460150866'
    req=urllib.request.urlopen(url).read().decode()
    r=re.findall(r'src="(.*?.jpg)" pic_ext',req)
    x=0
    for i in r:
    local='F://python/'
    urllib.request.urlretrieve(i,local+ '%s.jpg' % x)
    x=x+1
     
    浏览器的模拟(需要添加headers头信息,urlopen不支持,需要使用Request)
     
    import urllib.request
    url='http://www.baidu.com'
    header={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36'}
    request=urllib.request.Request(url,headers=header)
    response=urllib.request.urlopen(request).read()
    f=open('file1','wb')
    f.write(response)
    f.close()
     
    
    

    路漫漫其修远兮,吾将迷途而知返
  • 相关阅读:
    作业day17
    python开发学习day17 (生成器;面向过程;三元表达式;生成式,内置函数)
    作业day16
    python开发学习day16 (三层装饰器;迭代器)
    python开发学习day15 (叠加装饰器;递归调用;匿名函数)
    作业day14
    python开发学习day14 (装饰器;语法糖;装饰器模板)
    python开发学习day13 (函数嵌套;名称空间与作用域;闭包函数)
    作业day12
    Python-简单算法程序
  • 原文地址:https://www.cnblogs.com/python2687806834/p/9771329.html
Copyright © 2011-2022 走看看