标签: urllib3

尝试使用urllib3和json获取烂番茄数据时出错(Python)

作为API的介绍,我试图找出如何使用Rotten Tomatoes API在python中访问数据.这也是我第一次与json打交道.

我正在使用Python 3.4并确认已经安装了json和urllib3.

这是我的代码:

import urllib3
import json

url = 'http://api.rottentomatoes.com/api/public/v1.0/lists/movies/box_office.json?limit=16&country=us&apikey=API-KEY';

http = urllib3.PoolManager()
request = http.request('GET', url)
print (json.load(request));
request.release_conn()
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

Traceback (most recent call last):
  File "C:\Users\admnasst1\Documents\Personal\Python\RotTomTest.py", line 16, in <module>
    print (str(json.load(request)));
  File "C:\Python34\lib\json\__init__.py", line 268, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
  File "C:\Python34\lib\json\__init__.py", line 312, in loads
    s.__class__.__name__))
TypeError: the JSON object must be str, not 'bytes'
Run Code Online (Sandbox Code Playgroud)

由于我正在尝试这么多新东西(API,urllib3,json),我不确定发生了什么.我已经尝试过做上面代码的其他一些版本,并且我一直得到同样的错误,所以我想我必须遗漏一些基本的东西......你们有没有发现它?

python json urllib3 rotten-tomatoes

4
推荐指数
1
解决办法
5347
查看次数

Python InsecureRequestWarning真正意味着什么?

我收到了警告:

/.../local/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.py:734: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.html
  InsecureRequestWarning)
Run Code Online (Sandbox Code Playgroud)

我在读文件.

如果我知道自己在做什么,就像这个一样,我会看到很多关于如何禁用它的帖子.

但我仍然无法弄清楚错误的含义.我认为这意味着我错过了证书(因为它只发生在我的VPS上,而不是我的Mac上运行相同版本的脚本),但我不明白为什么我需要证书才能发出安全请求到第三方API.

非常感谢一个有用的摘要(或只是正确方向上的一点),所以我可以决定是否禁用它.我的直觉是我不应该禁用它,所以我想弄清楚如何正确解决问题.

python ssl-certificate urllib3

4
推荐指数
1
解决办法
3766
查看次数

Python请求-如何添加多个自己的证书

有没有办法告诉请求库添加多个证书,如指定文件夹中的所有 .pem 文件?

import requests, glob
CERTIFICATES = glob('/certs/')
url = '127.0.0.1:8080'
requests.get(url, cert=CERTIFICATES)
Run Code Online (Sandbox Code Playgroud)

似乎仅适用于单个证书

我已经搜索了 google 和 python 文档。我找到的最好的教程是官方文档中的 SSL 认证部分

python ssl urllib3

4
推荐指数
1
解决办法
2922
查看次数

urllib3如何查找Http错误的代码和消息

我正在使用 python 捕获 http 错误,但我想知道错误的代码(例如 400、403,..)。另外我想获取错误消息。但是,我在文档中找不到这两个属性。有人可以帮忙吗?谢谢。

    try:
        """some code here"""
    except urllib3.exceptions.HTTPError as error:
        """code based on error message and code"""
Run Code Online (Sandbox Code Playgroud)

python exception urllib3

4
推荐指数
1
解决办法
2万
查看次数

忽略 SSL 证书验证会产生什么影响?

我有一个关于 Python 请求库中 SSL 验证的问题,但我相信它对我来说更普遍。

我目前忽略证书验证,因为我需要连接的第三方 API使用自签名证书。

在请求中关闭 SSL 验证有何影响?在现实世界中不验证 SSL 证书会产生什么影响。我可以保证传输的数据是安全/加密的吗?

ssl ssl-certificate urllib3 python-3.x python-requests

4
推荐指数
1
解决办法
3756
查看次数

用于发送带有证书、私有加密密钥和密码的请求的Python代码

我正在尝试从 https 调用获取响应,该调用已在其端安装了证书。这是我的代码

import requests
import urllib3

urllib3.disable_warnings()

cert_file_path = "/path/output-crt-file-name.crt"
key_file_path = "/path/output-key-file-name.key"
passwd = 'secretpass'
print(passwd)
url = "https://url/to/fetch/response"
params = {"AppID": "xxxx", "Safe": "xxxx", "Folder": "Root",
          "Object": "xxxx"}
cert = (cert_file_path, key_file_path, passwd)
r = requests.get(url, params=params, cert=cert, verify=True )
print(r.text)
Run Code Online (Sandbox Code Playgroud)

这会引发错误

由 SSLError('客户端私钥已加密,需要密码'引起)

请建议。

python urllib3

4
推荐指数
1
解决办法
9821
查看次数

urllib3 的 Jenkins 作业失败:ValueError:超时值连接为 &lt;object object at 0x7efe5adb9aa0&gt;,但它必须是 int、float 或 None

截至 2023 年 5 月 4 日 16:00,我开始看到我们的一项 Jenkins 作业失败并出现以下错误:

Traceback (most recent call last):
   File "/home/jenkins/agent/workspace/my-jenkins-job/.tox/appdev-ci-staging/lib/python3.9/site-packages/jenkins/__init__.py", line 822, in get_info
     return json.loads(self.jenkins_open(
   File "/home/jenkins/agent/workspace/my-jenkins-job/.tox/appdev-ci-staging/lib/python3.9/site-packages/jenkins/__init__.py", line 560, in jenkins_open
     return self.jenkins_request(req, add_crumb, resolve_auth).text
   File "/home/jenkins/agent/workspace/my-jenkins-job/.tox/appdev-ci-staging/lib/python3.9/site-packages/jenkins/__init__.py", line 576, in jenkins_request
     self.maybe_add_crumb(req)
   File "/home/jenkins/agent/workspace/my-jenkins-job/.tox/appdev-ci-staging/lib/python3.9/site-packages/jenkins/__init__.py", line 373, in maybe_add_crumb
     response = self.jenkins_open(requests.Request(
   File "/home/jenkins/agent/workspace/my-jenkins-job/.tox/appdev-ci-staging/lib/python3.9/site-packages/jenkins/__init__.py", line 560, in jenkins_open
     return self.jenkins_request(req, add_crumb, resolve_auth).text
   File "/home/jenkins/agent/workspace/my-jenkins-job/.tox/appdev-ci-staging/lib/python3.9/site-packages/jenkins/__init__.py", line 579, in jenkins_request
     self._request(req))
   File "/home/jenkins/agent/workspace/my-jenkins-job/.tox/appdev-ci-staging/lib/python3.9/site-packages/jenkins/__init__.py", line 553, in _request
     return self._session.send(r, **_settings)
   File "/home/jenkins/agent/workspace/my-jenkins-job/.tox/appdev-ci-staging/lib/python3.9/site-packages/requests/sessions.py", line 701, in …
Run Code Online (Sandbox Code Playgroud)

python urllib3 jenkins python-requests jenkins-pipeline

4
推荐指数
1
解决办法
4494
查看次数

使用urllib3进行身份验证

我正在尝试使用urllib3连接到网页.代码如下.

import urllib3
http=urllib3.PoolManager()
fields={'username':'abc','password':'xyz'}
r=http.request('GET',url,fields)
Run Code Online (Sandbox Code Playgroud)

如果我们假设url是某个需要使用用户名和密码进行身份验证的网页,我是否使用正确的代码进行身份验证?

我使用urllib2非常舒服地做了这个,但是我无法使用urllib3做同样的事情.

非常感谢

python authentication urllib3

3
推荐指数
1
解决办法
2万
查看次数

如何使用urllib3下载文件?

这是基于本网站上的另一个问题:使用urllib3下载文件的最佳方式是什么? 但是,我不能在那里发表评论所以我问另一个问题:

如何使用urllib3下载(更大)文件?

我尝试使用与urllib2相同的代码(在Python 3中从web下载文件),但它与urllib3失败:

http = urllib3.PoolManager()

with http.request('GET', url) as r, open(path, 'wb') as out_file:       
    #shutil.copyfileobj(r.data, out_file) # this writes a zero file
    shutil.copyfileobj(r.data, out_file)
Run Code Online (Sandbox Code Playgroud)

这表示'bytes'对象没有属性'read'

然后我尝试在该问题中使用代码,但它陷入无限循环,因为数据总是为'0':

http = urllib3.PoolManager()
r = http.request('GET', url)

with open(path, 'wb') as out:
    while True:
        data = r.read(4096)         
        if data is None:
            break
        out.write(data)
r.release_conn()
Run Code Online (Sandbox Code Playgroud)

但是,如果我读取内存中的所有内容,则会正确下载文件:

http = urllib3.PoolManager()
r = http.request('GET', url)
with open(path, 'wb') as out:
    out.write(data)
Run Code Online (Sandbox Code Playgroud)

我不想这样做,因为我可能会下载非常大的文件.遗憾的是,urllib文档没有涵盖本主题中的最佳实践.

(另外,请不要建议请求或urllib2,因为它们在自签名证书方面不够灵活.)

urllib3 python-3.x

3
推荐指数
1
解决办法
7895
查看次数

pip install urllib3挂在“由于etag而缓存”上

urllib3的pip安装挂在“由于etag进行缓存”上。我正在构建一个不允许您指定--no-cache-dir的AWS圣杯项目,因此我需要在没有该命令的情况下解决此问题。有任何想法吗?

在虚拟环境中使用Python 3.6.5和Pip 10.0.1。

(partnerdb-virtualenv) C:\Windows\SysWOW64\partnerdb-project>pip install urllib3 -vvv
Config variable 'Py_DEBUG' is unset, Python ABI tag may be incorrect
Config variable 'WITH_PYMALLOC' is unset, Python ABI tag may be incorrect
Created temporary directory: C:\Users\Matt\AppData\Local\Temp\pip-ephem-wheel-cache-v0e8ikpl
Created temporary directory: C:\Users\Matt\AppData\Local\Temp\pip-req-tracker-d58lw_h5
Created requirements tracker 'C:\\Users\\Matt\\AppData\\Local\\Temp\\pip-req-tracker-d58lw_h5'
Created temporary directory: C:\Users\Matt\AppData\Local\Temp\pip-install-6qpv92ms
Collecting urllib3
  1 location(s) to search for versions of urllib3:
  * https://pypi.org/simple/urllib3/
  Getting page https://pypi.org/simple/urllib3/
  Looking up "https://pypi.org/simple/urllib3/" in the cache
  Request header has "max_age" as 0, cache bypassed
  Starting new HTTPS connection …
Run Code Online (Sandbox Code Playgroud)

python pip urllib3 python-requests chalice

3
推荐指数
1
解决办法
420
查看次数