精华内容
下载资源
问答
  • import urllib.request import sys import os def File_plus(): ''' 文件储存位置 判断文件是否存在,不存在则创建 ''' folder_path = "C:/Users/Admin/Desktop/download/" if not os.path.exists(folder_...

    1、方法一(显示百分比)

    import urllib.request
    import sys
    import os
    
    
    def File_plus():
        '''
        文件储存位置
        判断文件是否存在,不存在则创建
        '''
        folder_path = "C:/Users/Admin/Desktop/download/"
        if not os.path.exists(folder_path):
            os.makedirs(folder_path)
    
        return folder_path
    
    
    def progress(block_num, block_size, total_size):
        '''回调函数
            @block_num: 已经下载的数据块
            @block_size: 数据块的大小
            @total_size: 远程文件的大小
            write(): 显示下载进度,"\r"使得光标回到行首
            flush(): 刷新缓存区
        '''
        per = block_num * block_size / total_size * 100.0
        sys.stdout.write('\r>> Downloading %.1f%%' % (per))
        sys.stdout.flush()
    
    
    def download():
        folder_path = File_plus()
        url = 'http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2'
        local = url.split('/')[-1]
        urllib.request.urlretrieve(url, folder_path+local, progress)
    
    
    if __name__ == '__main__':
        download()
    

    2、方法二(文件名+百分比)

    import urllib.request
    import sys
    import os
    
    url = 'http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2'
    local = url.split('/')[-1]
    
    
    def File_plus():
        '''
        文件储存位置
        判断文件是否存在,不存在则创建
        '''
        folder_path = "C:/Users/Admin/Desktop/download/"
        if not os.path.exists(folder_path):
            os.makedirs(folder_path)
    
        return folder_path
    
    
    def progress(block_num, block_size, total_size):
        '''回调函数
            @block_num: 已经下载的数据块
            @block_size: 数据块的大小
            @total_size: 远程文件的大小
            write(): 显示下载进度,"\r"使得光标回到行首
            flush(): 刷新缓存区
        '''
        sys.stdout.write('\r>> Downloading %s %.1f%%' % (
                local, float(block_num * block_size) / float(total_size) * 100.0))
        sys.stdout.flush()
    
    
    def download():
        folder_path = File_plus()
        urllib.request.urlretrieve(url, folder_path+local, progress)
    
    
    if __name__ == '__main__':
        download()
    
    

    3、方法三(显示文件大小)

    import urllib.request
    import sys
    import os
    
    
    def File_plus():
        '''
        文件储存位置
        判断文件是否存在,不存在则创建
        '''
        folder_path = "C:/Users/Admin/Desktop/download/"
        if not os.path.exists(folder_path):
            os.makedirs(folder_path)
    
        return folder_path
    
    
    def progress(block_num, block_size, total_size):
        '''回调函数
            @block_num: 已经下载的数据块
            @block_size: 数据块的大小
            @total_size: 远程文件的大小
            write(): 显示下载进度,"\r"使得光标回到行首
            flush(): 刷新缓存区
        '''
        per = block_num * block_size / total_size * 100.0
        downsize = block_num * block_size
        Do_size = '\r>> Downloading:%.1f%%' % (per)+" ===> "+"%.2fM" % (
                downsize/1024/1024) + "/" + "%.2fM" % (total_size/1024/1024)
        sys.stdout.write(Do_size)
        sys.stdout.flush()
    
    
    def download():
        folder_path = File_plus()
        url = 'http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2'
        local = url.split('/')[-1]
        urllib.request.urlretrieve(url, folder_path+local, progress)
    
    
    if __name__ == '__main__':
        download()
    

    4、方法四(显示下载进度条)

    import urllib.request
    import sys
    import os
    
    
    def File_plus():
        '''
        文件储存位置
        判断文件是否存在,不存在则创建
        '''
        folder_path = "C:/Users/Admin/Desktop/download/"
        if not os.path.exists(folder_path):
            os.makedirs(folder_path)
    
        return folder_path
    
    
    def format_size(bytes):
        '''
        字节bytes转化K M G
        '''
        bytes = float(bytes)  # B(比特)
        kb = bytes / 1024
        if kb >= 1024:
            M = kb / 1024
            if M >= 1024:
                G = M / 1024
                return "%.2fG" % (G)
            else:
                return "%.2fM" % (M)
        else:
            return "%.2fK" % (kb)
    
    
    def progress(block_num, block_size, total_size):
        '''回调函数
            @block_num: 已经下载的数据块
            @block_size: 数据块的大小
            @total_size: 远程文件的大小
            write(): 显示下载进度,"\r"使得光标回到行首
            flush(): 刷新缓存区
        '''
        downsize = block_num * block_size
        speed_str = " 下载进度:%s" % format_size(downsize)
        Totalsize = "/%.2fM" % (total_size/1024/1024)
        # 设置下载进度条
        pervent = downsize / total_size
        n = round(pervent * 50)
        s = ('#' * n).ljust(50, '-')
        sys.stdout.write('\r' + speed_str + Totalsize+'[' + s + ']')
        sys.stdout.flush()
    
    
    def download():
        folder_path = File_plus()
        url = 'http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2'
        local = url.split('/')[-1]
        urllib.request.urlretrieve(url, folder_path+local, progress)
    
    
    if __name__ == '__main__':
        download()
    
    展开全文
  • 今晚本来打算刷题的,但是舍友让我给他做一个爬虫(因为快要考试了嘛)。...本来以为是我的问题,然后找了很久(TMD),...最后查了一查,urllib.request.urlretrieve数据少还好数据多了就容易卡死。(但是之前爬的别的也

    今晚本来打算刷题的,但是舍友让我给他做一个爬虫(因为快要考试了嘛)。然后其他的爬文字的都还好,但是在爬图片的时候,明明图片的url都没有错,但是20个图片爬到了5个就报错了,显示了一大堆raise HTTPError(req.full_url, code, msg, hdrs, fp)
    本来以为是我的问题,然后找了很久(TMD),也查了很多的资料,找不到解答,最后干脆用了另一种方法才做出来。
    最后查了一查,urllib.request.urlretrieve数据少还好数据多了就容易卡死。(但是之前爬的别的也没有这个情况)

    报错的代码

    # -*- coding: utf-8 -*-
    """
    Created on Wed Nov 24 19:46:58 2021
    
    @author: sys
    """
    import requests
    import urllib.request
    from lxml import etree
    import pandas
    headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36 Edg/96.0.1054.34',
             'Cookie': 'll="118229"; bid=URZuuPTNxFs; _ga=GA1.2.378646834.1634915868; __gads=ID=67f008fccb5d9129-2219de0694ce00cd:T=1636019292:RT=1636019292:S=ALNI_MaEL_LEuiBzhcr_ayCuHR30-akN3Q; douban-fav-remind=1; __utmz=30149280.1637231848.13.6.utmcsr=link.csdn.net|utmccn=(referral)|utmcmd=referral|utmcct=/; ap_v=0,6.0; __utma=30149280.378646834.1634915868.1638098811.1638364973.20; _pk_ses.100001.afe6=*; __utmc=30149280; __utmt=1; _pk_id.100001.afe6=f55a9d3464457532.1637828284.3.1638365266.1637831705.; __utmb=30149280.8.10.1638364973'}
    name=[]
    like=[]
    zhaopian=[]
    local=r'C:\Users\Lenovo\Desktop\图片h/'
    url="https://music.douban.com/artists/genre_page/6/3"
    hhh=requests.get(url, headers=headers)
    h=etree.HTML(hhh.text)
    hh=h.xpath('//*[@id="content"]/div/div[1]/div[2]/div/div/div[2]/a/text()')
    # //*[@id="content"]/div/div[1]/div[2]/div/div[2]/div[2]/a
    hhhh=h.xpath('//*[@id="content"]/div/div[1]/div[2]/div/div/div[2]/div/text()')
    name.extend(hh)
    like.extend(hhhh)
    hhhhh=h.xpath('//*[@id="content"]/div/div[1]/div[2]/div/div/div[1]/a/img/@src')
    # //*[@id="content"]/div/div[1]/div[2]/div/div[2]/div[1]/a/img
    zhaopian.extend(hhhhh)
    zidian={"歌手":name,'喜欢人数':like}
    pa=pandas.DataFrame(zidian)
    pa.to_csv('歌手信息.csv',encoding=('utf-8-sig'))
    for i in range(0,len(name)):
        # if i!=5:
        zz=zhaopian[i]
        nam=name[i]
        print(i)
        urllib.request.urlretrieve(zhaopian[i],local+name[i]+'.jpg')
    

    在这里插入图片描述
    爬到第6个就报错了。

    解决办法:

    使用requests模块进行保存

    
    for i in range(0,len(name)):
    
        r=requests.get(zhaopian[i])
        # //zhaopian列表中保存了每一个照片的url
    
        with open(local+name[i]+'.jpg', 'wb+') as f:
            f.write(r.content)
            f.close()
    

    最终的代码:

    import requests
    import urllib.request
    from lxml import etree
    import pandas
    
    headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36 Edg/96.0.1054.34',
             'Cookie': 'll="118229"; bid=URZuuPTNxFs; _ga=GA1.2.378646834.1634915868; __gads=ID=67f008fccb5d9129-2219de0694ce00cd:T=1636019292:RT=1636019292:S=ALNI_MaEL_LEuiBzhcr_ayCuHR30-akN3Q; douban-fav-remind=1; __utmz=30149280.1637231848.13.6.utmcsr=link.csdn.net|utmccn=(referral)|utmcmd=referral|utmcct=/; ap_v=0,6.0; __utma=30149280.378646834.1634915868.1638098811.1638364973.20; _pk_ses.100001.afe6=*; __utmc=30149280; __utmt=1; _pk_id.100001.afe6=f55a9d3464457532.1637828284.3.1638365266.1637831705.; __utmb=30149280.8.10.1638364973'}
    name=[]
    like=[]
    zhaopian=[]
    local=r'C:\Users\Lenovo\Desktop\图片h/'
    url="https://music.douban.com/artists/genre_page/6/3"
    
    hhh=requests.get(url, headers=headers)
    
    h=etree.HTML(hhh.text)
    
    hh=h.xpath('//*[@id="content"]/div/div[1]/div[2]/div/div/div[2]/a/text()')
    # //*[@id="content"]/div/div[1]/div[2]/div/div[2]/div[2]/a
    hhhh=h.xpath('//*[@id="content"]/div/div[1]/div[2]/div/div/div[2]/div/text()')
    name.extend(hh)
    like.extend(hhhh)
    hhhhh=h.xpath('//*[@id="content"]/div/div[1]/div[2]/div/div/div[1]/a/img/@src')
    # //*[@id="content"]/div/div[1]/div[2]/div/div[2]/div[1]/a/img
    zhaopian.extend(hhhhh)
    zidian={"歌手":name,'喜欢人数':like}
    pa=pandas.DataFrame(zidian)
    pa.to_csv('歌手信息.csv',encoding=('utf-8-sig'))
    
    for i in range(0,len(name)):
        r=requests.get(zhaopian[i])
        with open(local+name[i]+'.jpg', 'wb+') as f:
            f.write(r.content)
            f.close()
    

    一个小问题一晚上就过去了,害。怎么说呢,还算是有收获吧!

    展开全文
  • 保证url是有效的,在执行到urlretrieve时发生崩溃,不太理解HTTP 461是什么错误file_name = "/Users/wz/Desktop/heroes face new/hero-" + str(item['id']) + item['name'] + '.png'urllib.request.urlretrieve(item['...

    一个用来下载图片的函数,保证url是有效的,在执行到urlretrieve时发生崩溃,不太理解HTTP 461是什么错误

    file_name = "/Users/wz/Desktop/heroes face new/hero-" + str(item['id']) + item['name'] + '.png'

    urllib.request.urlretrieve(item['url'], str(file_name))//这里崩溃

    print(file_name, '写入成功')

    报如下的错误

    urllib.error.HTTPError: HTTP Error 461:

    错误详细信息

    Traceback (most recent call last):

    File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py", line 1531, in

    globals = debugger.run(setup['file'], None, None, is_module)

    File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py", line 938, in run

    pydev_imports.execfile(file, globals, locals) # execute the script

    File "/Applications/PyCharm.app/Contents/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile

    exec(compile(contents+"\n", file, 'exec'), glob, loc)

    File "/Users/wz/PycharmProjects/装备/main.py", line 204, in

    three_hundred_hero.get_png(data)

    File "/Users/wz/PycharmProjects/装备/main.py", line 45, in get_png

    urllib.request.urlretrieve(item['url'], str(file_name))

    File "/Users/wz/anaconda/lib/python3.5/urllib/request.py", line 188, in urlretrieve

    with contextlib.closing(urlopen(url, data)) as fp:

    File "/Users/wz/anaconda/lib/python3.5/urllib/request.py", line 163, in urlopen

    return opener.open(url, data, timeout)

    File "/Users/wz/anaconda/lib/python3.5/urllib/request.py", line 472, in open

    response = meth(req, response)

    File "/Users/wz/anaconda/lib/python3.5/urllib/request.py", line 582, in http_response

    'http', request, response, code, msg, hdrs)

    File "/Users/wz/anaconda/lib/python3.5/urllib/request.py", line 510, in error

    return self._call_chain(*args)

    File "/Users/wz/anaconda/lib/python3.5/urllib/request.py", line 444, in _call_chain

    result = func(*args)

    File "/Users/wz/anaconda/lib/python3.5/urllib/request.py", line 590, in http_error_default

    raise HTTPError(req.full_url, code, msg, hdrs, fp)

    urllib.error.HTTPError: HTTP Error 461:

    展开全文
  • Traceback(最近一次调用最后一次):文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py”,第1318行,在do_open encode_chunked = req.has_header('转移-encoding'))文件“/...

    Traceback(最近一次调用最后一次):文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py”,第1318行,在do_open encode_chunked = req.has_header('转移-encoding'))文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py”,第1239行,请求self._send_request(方法,网址,正文, Headers , encode_chunked)文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py”,第1285行,在_send_request中self.endheaders(body,encode_chunked = encode_chunked)文件“/ Library / Frameworks / Python.framework / Versions / 3.6 / lib / python3.6 / http / client.py“,第1234行,在endheaders中self._send_output(message_body,encode_chunked = encode_chunked)文件”/Library/Frameworks/Python.framework/Versions /3.6/lib/python3.6/http/client.py“,第1026行,在_send_output self.send(msg)文件”/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/ client.py“,第964行,发送到self.connect()文件”/Library/Frameworks/Python.fr amework / Versions / 3.6 / lib / python3.6 / http / client.py“,第1400行,连接server_hostname = server_hostname)文件”/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl .py“,第407行,在wrap_socket _context = self,_session = session)文件”/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py“,第814行,在init self中 . do_handshake()文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py”,第1068行,在do_handshake self._sslobj.do_handshake()文件“/ Library / Frameworks / Python中 . framework / Versions / 3.6 / lib / python3.6 / ssl.py“,第689行,在do_handshake self._sslobj.do_handshake()ssl.SSLError:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:777)处理期间上述异常中,发生了另一个异常:Traceback(最近一次调用最后一次):文件“/Users/macintosh/PycharmProjects/Claculatorer/Bucky.py”,第9行,在download_web_image(“https://upload.wikimedia.org// wikipedia / commons / b / b4 / JPEG_example_JPG_RIP_100.jpg“)文件” /Users/macintosh/PycharmProjects/Claculatorer/Bucky.py“,第7行,在download_web_image urllib.request.urlretrieve(url,fullname)文件”/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ urllib / request.py“,第248行,在urlretrieve中使用contextlib.closing(urlopen(url,data))为fp:文件”/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/ request.py“,第223行,在urlopen中返回opener.open(url,data,timeout)文件”/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py“,line 526,在open response = self._open(req,data)文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py”,第544行,在_open'_open'中,req)文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py”,第504行,在_call_chain result = func(* args)文件“/ Library / Frameworks / Python.framework / Versions / 3.6 / lib / python3.6 / urllib / request.py“,第1361行,在https_open context = self._context中,check_hostname = se lf._check_hostname)文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py”,第1320行,在do_open中提升URLError(错误)urllib.error.URLError:处理完成退出代码1

    展开全文
  • python 爬虫爬取百度贴吧美图图片,urllib.request.urlretrieve图片批量下载函数 百度贴吧美图网址:https://tieba.baidu.com/p/5815297430 思路:1:每次最多发3张图片,一张页面有35张图片; 2:在页面上的图片,...
  • 如果下载到D盘也是没有问题的,下载到我建立的目录下就有问题(主要是我想在D盘建立以URL这个问号...我想用这个数字作为文件夹的名字,存放这个链接下载下来的图片)源码如下:import urllib.requestimport reimport ...
  • 您需要使用您的代理对象,而不仅仅是实例化...尝试使用这种模式:#create the object, assign it to a variableproxy = urllib.request.ProxyHandler({'http': '127.0.0.1'})# construct a new opener using your pro...
  • 我用Jupyter Notebook爬取了需要保存的图片的url,但是利用urllib.request.urlretrieve() 将图片保存到本地,图片没有内容,该url使用360浏览器打开也是没有内容的图片(和我保存在本地一样),但是用goole打开就是...
  • from urllib.parse import quote # 处理img_url中的中文字符,不对链接中的/:?=进行处理 n_url = quote(img_url, safe='/:?=') file_name = 'c:/img' ...urllib.request.urlretrieve(n_url, file_name)
  • 使用urllib.request.urlretrieve方式:from urllib.request import urlretrieveurlretrieve("https://www.awaimai.com/wp-content/uploads/2017/09/phpinfo.png", "phpinfo.png")如果要使用代理,需要先导入:socket...
  • import urllib.request def getAndSaveStock(stockCodeList,path): for stockCode in stockCodeList: url = "http://quotes.money.163.com/service/chddata.html" param = bytes(urllib.parse.urlencode({'code'...
  • urllib.request.urlretrieve()函数下载文件卡死解决办法
  • 问 题如果下载到D盘也是没有问题的,下载到我建立的目录下就有问题(主要是我想在D盘建立以URL这个...我想用这个数字作为文件夹的名字,存放这个链接下载下来的图片)源码如下:import urllib.requestimport reim...
  • 看源码啊, 写的很清楚:def urlretrieve(url, filename=None, reporthook=None, data=None):"""Retrieve a URL into a temporary location on disk.Requires a URL argument. If a filename is passed, it is used as...
  • urllib.request.urlretrieve(url, filename=None, reporthook=None, data=None) 函数说明 将URL表示的网络对象复制到本地文件。如果URL指向本地文件,则对象将不会被复制,除非提供文件名。返回一个元组()(filename...
  • urllib.request.urlretrieve及添加headers

    千次阅读 2019-10-12 08:59:52
    下载图片: import urllib.request # url = ...# # response = urllib.request.urlretrieve(url, "hh.html") # # print(response) image_url = "https://img04.sogoucdn.com/net/a/04/link?url=ht...
  • 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、...
  • urllib.request.urlretrieve()函数

    千次阅读 2019-04-08 02:38:32
    urllib.request.urlretrieve(url, filename=None, reporthook=None, data=None)【urllib.urlretrieve(python2中)】 函数说明 将URL表示的网络对象复制到本地文件。如果URL指向本地文件,则对象将不会被复制,...
  • ![图片说明]... 会下载24张图片,但不是像以前那样,文件名从0开始下载,而是不断地覆盖23.jpg这个文件名,请问这是什么问题呢?(特别像js的异步与闭包)
  • 使用urllib.request.urlretrieve,有时需要添加UserAgent,这里提供一种变通的方法: opener = urllib.request.build_opener() opener.addheaders = [('User-agent', 'Opera/9.80 (Android 2.3.4; Linux; Opera ...
  • from urllib import request, error import sys def progressbar(cur, total=100): percent = '{:.2%}'.format(cur / total) sys.stdout.write('\r') # sys.stdout.write("[%-50s] %s" % ('=' * int(m...
  • 正文 urllib.request.urlretrieve() 是从Python 2的urllib模块中移植过来的,之后这个函数可能被弃用。 urllib.request.urlretrieve(url, filename=None, reporthook=None, data=None) 将 URL 中的网络资源拷贝到...
  • 艺赛旗 RPA9.0全新首发免费下载 点击下载 ...函数参数说明 urllib.request.urlretrieve(url, filename=None, reporthook=None, data=None) url: 文件下载链接 filename: 文件下载路径(如果参数未指定,urllib 会...
  • urllib.request.urlretrieve 和write都可以实现图片的下载 1.urllib.request.urlretrieve import urllib.request url = r'https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=1419207701,4272270283&...
  • urllib模块提供的urlretrieve()函数,urlretrieve()方法直接将远程的数据下载到本地 urllib语法 参数url:传入的网址,网址必须得是个字符串 参数filename:指定了保存本地路径(如果参数未指定,urllib会生成一个临时...
  • 参考博客链接https://blog.csdn.net/qq_21856335/article/details/80947690 ... 爬虫用到的函数 urllib.request.urlretrieve(link,filesavepath) 参数说明: url:外部或者本地ur...
  • 结合在网上找到的解决办法,成功解决了在使用urlretrieve下载文件的过程中所遇到了一些问题:urlretrieve下载文件不完全且下载时长过长陷入死循环 参考地址1、参考地址2 ...import urllib.request url = "ht...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,622
精华内容 4,248
关键字:

urllib.request.urlretrieve