为什么 url 在浏览器中有效但不能使用 requests get 方法

2023-11-29

在测试时,我刚刚发现,这

url = ' http://wi312.rockdizfile.com/d/uclf2kr7fp4r2ge47pcuihdpky2chcsjur5nrds2hx53f26qgxnrktew/Kimbra%20-%20Love%20in%20High%20Places.mp3'

在浏览器中工作并且文件下载开始,但是如果我尝试使用获取此文件

requests.get(url)

它给出了巨大的错误......

任何线索为什么会发生这种情况?需要解码才能使其正常工作吗?

Update这是我不断收到的错误:

Exception in thread Thread-5:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 810, in __bootstrap_inner
    self.run()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 763, in run
    self.__target(*self.__args, **self.__kwargs)
  File "python/file_download.py", line 98, in _downloadChunk
    stream=True)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests-2.1.0-py2.7.egg/requests/api.py", line 55, in get
    return request('get', url, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests-2.1.0-py2.7.egg/requests/api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests-2.1.0-py2.7.egg/requests/sessions.py", line 382, in request
    resp = self.send(prep, **send_kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests-2.1.0-py2.7.egg/requests/sessions.py", line 485, in send
    r = adapter.send(request, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests-2.1.0-py2.7.egg/requests/adapters.py", line 381, in send
    raise Timeout(e)
Timeout: (<requests.packages.urllib3.connectionpool.HTTPConnectionPool object at 0x10258de90>, 'Connection to wi312.rockdizfile.com timed out. (connect timeout=0.001)')

我发布时没有空格,它只是在换行符中,因为我发布了内联代码嵌入。

这是发出请求的代码:(也尝试新的 URL:http://archive.org/download/LucyIsabelleMarsh/LucyIsabelleMarsh-ItalianStreetSong.mp3)

import requests
import signal
import sys
import time
import threading
import utils as _fdUtils
from socket import error as SocketError, timeout as SocketTimeout

def _downloadChunk(url, idx, irange, fileName, sizeInBytes):
    _log.debug("Downloading %s for first chunk %s " % (irange, idx+1))
    pulledSize = irange[-1]
    try:
        resp = requests.get(url, allow_redirects=False,  timeout=0.001,
                            headers={'Range': 'bytes=%s-%s' % (str(irange[0]), str(irange[-1]))}, 
                            stream=True)
    except (SocketTimeout, requests.exceptions), e:
        _log.error(e)
        return


    chunk_size = str(irange[-1])
    for chunk in resp.iter_content(chunk_size):
        status = r"%10d  [%3.2f%%]" % (pulledSize, pulledSize * 100. / int(chunk_size))
        status = status + chr(8)*(len(status)+1)
        sys.stdout.write('%s\r' % status)
        sys.stdout.flush()
        pulledSize += len(chunk)
        dataDict[idx] = chunk
        time.sleep(.03)
        if pulledSize == sizeInBytes:
            _log.info("%s downloaded %3.0f%%", fileName, pulledSize * 100. / sizeInBytes)

class ThreadedFetch(threading.Thread):
    """ docstring for ThreadedFetch
    """
    def __init__(self, saveTo, queue):
        super(ThreadedFetch, self).__init__()
        self.queue = queue
        self.__saveTo = saveTo

    def run(self):
        threadLimiter.acquire()
        try:
            items = self.queue.get()
            url = items[0]
            split = items[-1]
            fileName = _fdUtils.getFileName(url)

            # grab split chunks in separate thread.
            if split > 1:
                maxSplits.acquire()
                try:

                    sizeInBytes = _fdUtils.getUrlSizeInBytes(url)
                    if sizeInBytes:
                        byteRanges = _fdUtils.getRangeSegements(sizeInBytes, split)
                    else:
                        byteRanges = ['0-']
                    filePath = os.path.join(self.__saveTo, fileName)

                    downloaders = [
                        threading.Thread(
                            target=_downloadChunk, 
                            args=(url, idx, irange, fileName, sizeInBytes),
                        )
                        for idx, irange in enumerate(byteRanges)
                        ]

                    # start threads, let run in parallel, wait for all to finish
                    for th in downloaders:
                        th.start()

                    # this makes the wait for all thread to finish
                    # which confirms the dataDict is up-to-date
                    for th in downloaders:
                        th.join()
                    downloadedSize = 0
                    with open(filePath, 'wb') as fh:
                        for _idx, chunk in sorted(dataDict.iteritems()):
                            downloadedSize += len(chunk)
                            status = r"%10d  [%3.2f%%]" % (downloadedSize, downloadedSize * 100. / sizeInBytes)
                            status = status + chr(8)*(len(status)+1)
                            fh.write(chunk)
                            sys.stdout.write('%s\r' % status)
                            time.sleep(.04)
                            sys.stdout.flush()
                            if downloadedSize == sizeInBytes:
                                _log.info("%s, saved to %s", fileName, self.__saveTo)
                    self.queue.task_done()
                finally:
                    maxSplits.release()

回溯显示Timeout异常,并且在您的代码中确实设置了非常短的超时,请删除此限制或增加它:

requests.get(url, allow_redirects=False,  timeout=0.001, # <-- this is very short

即使您访问的是本地主机(您自己的计算机),这样的超时也会导致超时异常。来自文档:

Note

timeout 不是整个响应下载的时间限制;相当, 如果服务器未发出响应,则会引发异常 超时秒(更准确地说,如果在 底层套接字的超时秒数)。

所以它没有做你可能期望的事情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 url 在浏览器中有效但不能使用 requests get 方法 的相关文章

  • python sys.path 故障排除

    python 文档位于http docs python org library sys html http docs python org library sys html比如说sys path is 从环境变量 PYTHONPATH 以及
  • 如何在多进程系统中实现锁定?

    我们正在并行运行许多詹金斯项目 我们使用 python 并且选择使用 pyenv 管理虚拟环境 不幸的是 pyenv 有一个众所周知的竞争条件 https github com yyuu pyenv issues 174 为了解决这个问题
  • 如何避免使用 python 处理空的标准输入?

    The sys stdin readline 返回之前等待 EOF 或新行 所以如果我有控制台输入 readline 等待用户输入 相反 我想打印帮助并在没有需要处理的情况下退出并显示错误 而不是等待用户输入 原因 我正在寻找一个Pytho
  • 使用python查找txt文件中字母出现的次数

    我需要从 txt 文件中读取该字母并打印 txt 文件中出现的次数 到目前为止 我已经能够在一行中打印内容 但计数有问题 有人可以指导吗 infile open grades txt content infile read for char
  • 将非常大的Python列表输出保存到mysql表中

    我想将 python 生成的列表的输出保存在 mysql 数据库的表中 该表如下所示 mysql 中的 myapc8 表 https i stack imgur com 4B4Hz png这是Python代码 在此输入图像描述 https
  • 在python中将数据库表写入文件的最快方法

    我正在尝试从数据库中提取大量数据并将其写入 csv 文件 我正在尝试找出最快的方法来做到这一点 我发现在 fetchall 的结果上运行 writerows 比下面的代码慢 40 with open filename a as f writ
  • 如何返回 cost, grad 作为 scipy 的 fmin_cg 函数的元组

    我怎样才能使 scipy 的fmin cg使用一个返回的函数cost and gradient作为元组 问题是有f对于成本和fprime对于梯度 我可能必须执行两次操作 非常昂贵 grad and cost被计算 此外 在它们之间共享变量可
  • 从 Azure ML 实验中访问 Azure Blob 存储

    Azure ML 实验提供了通过以下方式读取 CSV 文件并将其写入 Azure Blob 存储的方法 Reader and Writer模块 但是 我需要将 JSON 文件写入 blob 存储 由于没有模块可以执行此操作 因此我尝试在Ex
  • 使用 Paramiko 进行 DSA 密钥转发?

    我正在使用 Paramiko 在远程服务器上执行 bash 脚本 在其中一些脚本中 存在与其他服务器的 ssh 连接 如果我只使用 bash 不使用 Python 我的 DSA 密钥将被第一个远程服务器上的 bash 脚本转发并使用 以连接
  • 协程从未被等待

    我正在使用一个简单的上下文管理器 其中包含一个异步循环 class Runner def init self self loop asyncio get event loop def enter self return self def e
  • 根据其他单元格值更改多个单元格值

    我想更改包含的单元格moving to movingToOpenor movingToClose基于下一个单元格中给出的状态 有时循环会被中断并且不会从open to close or close to open 这是我当前的数据框 Dat
  • 如何查找或安装适用于 Python 的主题 tkinter ttk

    过去 3 个月我一直在制作一个机器人 仅用代码就可以完美运行 现在我的下一个目标是为它制作一个 GUI 但是我发现了一些障碍 主要的一个是能够看起来不像一个 30 年前的程序 我使用的是 Windows 7 我仅使用 Python 3 3
  • Ubuntu systemd 自定义服务因 python 脚本而失败

    希望获得有关 Ubuntu 中的 systemd 守护进程服务的一些帮助 我写了一个 python 脚本来禁用 Dell XPS 上的触摸屏 这更像是一个问题 而不是一个有用的功能 该脚本可以工作 但我不想一直启动它 这就是为什么我想到编写
  • Airflow 1.9 - 无法将日志写入 s3

    我在 aws 的 kubernetes 中运行气流 1 9 我希望将日志发送到 s3 因为气流容器本身的寿命并不长 我已经阅读了描述该过程的各种线程和文档 但我仍然无法让它工作 首先是一个测试 向我证明 s3 配置和权限是有效的 这是在我们
  • 在Raspberry pi上升级skimage版本

    我已经使用 Raspberry Pi 2 上的 synaptic 包管理器安装了 python 包 然而 skimage 模块版本 0 6 是 synaptic 中最新的可用版本 有人可以指导我如何将其升级到0 11 因为旧版本中缺少某些功
  • 如何指示 urwid 列表框的项目数多于当前显示的项目数?

    有没有办法向用户显示 urwid 列表框在显示部分上方 下方有其他项目 我正在考虑类似滚动条的东西 它可以显示条目的数量 或者列表框顶部 底部的单独栏 如果这个行为无法实现 有哪些方法可以实现这个通知 在我的研究过程中 我发现这个问题 ht
  • 无法通过 Python 子进程进行 SSH

    我需要通过堡垒 ssh 进入机器 因此 该命令相当长 ssh i
  • 如何给URL添加变量?

    我正在尝试从网站收集数据 我有一个 Excel 文件 其中包含该网站的所有不同扩展名 F i www example com example2 我有一个脚本可以成功从网站中提取 HTML 但现在我想为所有扩展自动执行此操作 然而 当我说 s
  • 如何获取pandas中groupby对象中的组数?

    我想知道有多少个独特的组需要执行计算 给定一个名为 groupby 的对象dfgroup 我们如何找到组的数量 简单 快速 Pandaic ngroups 较新版本的 groupby API pandas gt 0 23 提供了此 未记录的
  • 如何(安全)将 Python 对象发送到我的 Flask API?

    我目前正在尝试构建一个 Flask Web API 它能够在 POST 请求中接收 python 对象 我使用 Python 3 7 1 创建请求 使用 Python 2 7 运行 API 该 API 设置为在我的本地计算机上运行 我试图发

随机推荐

  • 如何在没有终端窗口的情况下运行PowerShell脚本?

    下面的快捷方式执行 powershell exe 并向其传递脚本 vscode ps1 它的工作原理是 对于我的所有尝试 它在运行时仍然会短暂显示一个终端窗口 您可以看到我已经传递了应该防止这种情况发生的参数 但我仍然看到该窗口 我需要做什
  • 如何在谷歌应用程序脚本中模拟搜索和替换范围

    我想自动替换 Google 表格中的一些文本 我在执行 CTRL H 搜索和替换时使用了记录宏功能 但没有记录任何内容 然后我尝试了这段代码 spreadsheet getRange B B replace oldText newText
  • 查找联系人组的帐户性质?

    我正在开发一个应用程序 其中需要找到联系人组的性质 即是谷歌组 电话组还是SIM组 如何找到它 请建议我该怎么做 提前致谢 下面的代码打印联系人姓名和类型 我还没有优化它 它会打印多条记录 但我想你会知道该怎么做 package com e
  • 在表结构上添加一个where-对象?

    用 label 重命名标题 我想过滤最后一个 SpaceLeft 但它不能正常工作 例如 Get WmiObject win32 logicaldisk ComputerName sfuslt167 Filter drivetype 3 F
  • 如何使用 CSS 使绝对 div 水平居中?

    我有一个 div 并希望它水平居中 尽管我给了它margin 0 auto 它不是居中的 container position absolute top 15px z index 2 width 40 max width 960px min
  • 如何使用 GameKit 在 iPhone 蓝牙中区分主机和客户端

    我使用 GameKit 框架制作了一款多人游戏 其中 2 个 iPhone iPod 可以通过蓝牙相互连接并玩 我正在考虑一种方法来选择哪个设备可以先播放 因此 合理的解决方案是选择连接的主机 GKSession 中是否有服务器和客户端 他
  • 在 Create React App 实用程序中启用 CORS

    我需要使用CORSReact 中的节点模块使用以下命令创建create react app公用事业 由于它是一个实用程序 我无法在内部进行调整和注入CORS进入预配置的EXPRESS module 我们怎样才能做到这一点 如果你需要这个来进
  • Nil 不能赋值给 ()->() 类型?

    这是一个类中的函数 可让您进行双击和单击手势 它在 Swift 2 3 中工作正常 但转换到 Swift 3 后会抛出一些错误 我一生都无法理解 弄清楚 我评论了它们发生的地方 UIShortTapGestureRecognizer swi
  • public_html上面存储和读取图片

    我正在尝试保护我的 PHP 图像上传脚本 我必须跨越的最后一个障碍是使用户无法直接执行图像 但服务器仍然可以在网页中提供它们 我尝试更改文件夹的所有权和权限但无济于事 因此我尝试存储 public html 上面的图像并将它们显示在存储在
  • Phonegap HTML5 / Android 应用程序 - Iframe 高度问题

    我们构建了一个 HTML5 应用程序 可以动态加载 iFrame 来显示外部内容 这个解决方案一直运行良好 直到 android 4 0 发布 这似乎改变了 iframe 渲染的工作方式 它似乎无法再检测高度 它显示一个小的可滚动框 其中包
  • 多个 CMake 目标的 target_compile_definitions?

    I ve been told做诸如设置之类的事情是不好的做法CFLAGS直接在 CMake 中 相反 我应该使用target compile definitions 命令 好的 但是 如果我想对多个 独立 目标使用相似 相同的定义怎么办 我
  • 在 C# 中格式化 Excel 中多行的最快方法

    我有一个巨大的数据集 我想将其写入 Excel 并且需要根据业务逻辑对行执行条件格式设置 因此 对于数据插入部分 我使用数据数组来填充 Excel 并且工作速度非常快 但是 在格式化行时 我发现性能严重下降 仅进行格式化就几乎花费了一倍以上
  • 我是否需要最新版本的 Xcode 才能将应用程序提交到应用程序商店? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我目前在 Snow Leopard 10 6 6 上运行 Xcode 版本 3 2 5 这意味着我可以在模拟器上运行 iOS 4 2 及以上版本的应用程序 如果我使用过时版本的 Xc
  • 使用 IRdisplayl::display_html 在 Jupyter 笔记本中显示观星仪输出时出错

    m lt capture output stargazer lm enroll lm grades lm score digits 3 header FALSE type html se rob se title Linear Panel
  • 如何为网络应用程序创建 exe?

    我使用 Visual studio 2012 ASP Net 4 5 C 和 Web 服务开发了一个 Web 应用程序 两者都放在一个解决方案中 我需要将我的解决方案转换为 EXE 文件 为我的 Web 应用程序创建 EXE 我真正需要的是
  • 如何显式地从某些特征调用函数?

    我想知道如何从特征调用函数 前提是有多个特征具有相同的函数名称 问题出在33行或者tr1 tr v 我该如何表达我想要调用的特质 struct V2D x i32 y i32 impl V2D fn new x i32 y i32 gt V
  • 如何在Python中让用户输入真/假?

    我是蟒蛇新手 我想让程序询问 is Johnny hungry True or false 用户输入 True然后打印是 Johnny needs to eat 用户输入错误然后打印 Johnny is full 我知道添加一个我输入的 i
  • 合并哈希数组中的重复项

    我有一个 ruby 中的哈希数组 name one tags xxx name two tags yyy name one tags zzz 我正在寻找任何干净的红宝石解决方案 这将使它能够简单地合并该数组中的所有重复项 通过合并我的意思是
  • 防止/捕获“IllegalArgumentException:参数必须是此视图的后代”错误

    我有一个 ListView 里面有一些可聚焦的组件 主要是EditTexts 是的 我知道这并不完全推荐 但总的来说 几乎一切都工作正常 并且焦点集中在它必须去的地方 我必须编码一些调整 不管怎样 我的问题是 当用手指滚动列表然后突然使用轨
  • 为什么 url 在浏览器中有效但不能使用 requests get 方法

    在测试时 我刚刚发现 这 url http wi312 rockdizfile com d uclf2kr7fp4r2ge47pcuihdpky2chcsjur5nrds2hx53f26qgxnrktew Kimbra 20 20Love