【问题标题】:https get request with python urllib2https 使用 python urllib2 获取请求
【发布时间】:2018-02-04 05:12:00
【问题描述】:

我正在尝试使用 urllib2 从 quandl 获取数据。请检查下面的代码。

import json
from pymongo import MongoClient
import urllib2
import requests
import ssl
#import quandl
codes = [100526];
for id in codes:
    url = 'https://www.quandl.com.com//api/v3/datasets/AMFI/"+str(id)+".json?api_key=XXXXXXXX&start_date=2013-08-30'
    req = urllib2.Request(url)
    response = urllib2.urlopen(req)
    data = response.read()
    print data

for id in codes:
    url = "https://www.quandl.com.com//api/v3/datasets/AMFI/"+str(id)+".json?api_key=XXXXXXXX&start_date=2013-08-30"
    request = requests.get(url,verify=False)
    print request

在第一种情况下,我收到 HTTPERROR 异常 404。当我使用请求模块时,即使在使用 verify=false 后也会出现 SSL 错误。我正在浏览以前的帖子,但大多数都与 HTTP 请求有关。

感谢您的帮助。 J

【问题讨论】:

    标签: python https urllib2


    【解决方案1】:

    您似乎使用了错误的 URL(.com.com 而不是 .com)以及代码的第一个版本中不同引号的组合。请改用以下内容,它应该可以工作:

    import urllib2
    import requests
    
    codes = [100526]
    
    for id in codes:
        url = "https://www.quandl.com//api/v3/datasets/AMFI/"+str(id)+".json?start_date=2013-08-30"
        req = urllib2.Request(url)
        response = urllib2.urlopen(req)
        print response.read()
    
    for id in codes:
        url = "https://www.quandl.com//api/v3/datasets/AMFI/"+str(id)+".json?start_date=2013-08-30"
        response = requests.get(url,verify=False)
        print response.text
    

    要禁用有关 SSL 证书的警告,请在使用 requests 发出请求之前使用 the following code

    from requests.packages.urllib3.exceptions import InsecureRequestWarning
    requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
    

    【讨论】:

    • 感谢您的回复。我猜 .com 引起了错误。并且可以确定我使用过request = requests.get(url,cert=('C:\\ssl\\ca.crt', 'C:\\ssl\\ca.key')) jsonReq = request.json()
    【解决方案2】:

    这对我有用,但您会收到有关 SSL 证书的警告,但您不需要关心它。

    import requests
    codes = [100526];
    for id in codes:
        url = "https://www.quandl.com.com//api/v3/datasets/AMFI/"+str(id)+".json?api_key=XXXXXXXX&start_date=2013-08-30"
        request = requests.get(url, verify=False)
        print request.text
    

    request.text 有你的回复数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 2014-07-06
      • 2016-05-26
      • 2015-07-14
      相关资源
      最近更新 更多