当前位置: 首页 > 知识库问答 >
问题:

urllib不使用api请求

席安康
2023-03-14

我试图编写这段代码,通过一个api从openweathermap.org请求这些信息,并尝试打印当前时间的温度和位置。

大部分代码都是我在互联网上找到的一些技巧的混合。

现在我得到了这个错误,我被卡住了。有人能帮助我再次走上正确的道路吗?

这是我的密码:

import urllib.request, urllib.parse, urllib.error
import json

while True:
    zipcode = input('Enter zipcode: ')
    if len(zipcode) < 1: break

    url = 'http://api.openweathermap.org/data/2.5/weather?
zip='+zipcode+',nl&appid=db071ece9a338a36e9d7a660ec4f0e37?'

    print('Retrieving', url)
    uh = urllib.request.urlopen(url)
    data = uh.read().decode()
    print('Retrieved', len(data), 'characters')

    try:
        js = json.loads(data)
    except:
        js = None

    temp = js["main"]["temp"]
    loc = js["name"]

    print("temperatuur:", temp)
    print("locatie:", loc)

所以url是这样的:http://api.openweathermap.org/data/2.5/weather?zip=3032,nl

我得到的错误是:

输入zipcode:3343正在检索http://api.openweathermap.org/data/2.5/weather?zip=3343,nl

共有1个答案

宋明亮
2023-03-14

经过一些故障排除,我发现了您的问题。你有多余的“?”在python中url的末尾。

删除该选项,您的请求就会正常工作。使用此代码尝试并成功-

import urllib.request, urllib.parse, urllib.error
import json

while True:
    zipcode = input('Enter zipcode: ')
    if len(zipcode) < 1: break

    url = 'http://api.openweathermap.org/data/2.5/weather?zip='+zipcode+',nl&appid=db071ece9a338a36e9d7a660ec4f0e37'

    print('Retrieving', url)
    uh = urllib.request.urlopen(url)
    data = uh.read().decode()
    print('Retrieved', len(data), 'characters')

    try:
        js = json.loads(data)
    except:
        js = None

    temp = js["main"]["temp"]
    loc = js["name"]

    print("temperatuur:", temp)
    print("locatie:", loc)
 类似资料:
  • 问题内容: 我在python3.4上有一个脚本,直到我从其下载文件的网站决定使用https时,它一直很好,现在出现错误,但无法弄清楚如何检索该文件。 我的脚本导入以下库,并使用urlretrive先前获取文件。由于现在已通过302重定向转发到https。我遇到一些错误。 我的错误: 问题答案: 您的Python安装或操作系统很可能已损坏。 如果仅使用HTTPS支持进行编译,则Python仅支持HT

  • 问题内容: 我正在尝试向以下页面发出POST请求:http : //search.cpsa.ca/PhysicianSearch 为了模拟单击“搜索”按钮而不填写任何表单,该表单会将数据添加到页面。通过在chrome开发人员工具中查看“网络”标签时点击按钮,我获得了POST标头信息。我之所以发布此信息,而不是仅仅从其他类似问题中复制解决方案,是因为我认为我可能没有获得正确的标题信息。格式是否正确,

  • 我正在尝试使用web api,它需要在python3中使用HTTP中的Post字段(web是https)。6.2. 我已经试过了。要求但答复是 urllib。错误HTTPError:HTTP错误403:禁止 下面是我使用的代码: 但是,我使用以下代码尝试了请求库: 它起作用了。我真的很想知道不同的,因为urllib.request可以在指定数据参数时发送帖子请求。

  • 我正在用Spotify搜索API编程。为了在我的网页上显示结果,我使用PHP和JSON格式的API。

  • 问题内容: 我正在尝试从此站点http://cheese.formice.com/maps/@5865339获取信息,但是当我请求使用urllib.urlopen时,它说我需要登录,我正在使用此代码: 我做错了什么? 问题答案: 它不是直接使用,但是您可能会发现使用该包更容易。有一个对象看到这个答案 这将使您登录到该站点。您可以通过以下方式进行验证: 登录后,您可以调用所需的特定网址。

  • urllib提供了一系列用于操作URL的功能。 Get urllib的request模块可以非常方便地抓取URL内容,也就是发送一个GET请求到指定的页面,然后返回HTTP的响应: 例如,对豆瓣的一个URLhttps://api.douban.com/v2/book/2129650进行抓取,并返回响应: from urllib import request with request.urlope