【问题标题】:using the re and urllib.request module使用 re 和 urllib.request 模块
【发布时间】:2019-01-28 19:38:03
【问题描述】:

我正在使用 python 3.7,我想编写一个程序,获取城市名称并返回天气预报。 我开始我的代码:

import re
import urllib.request
#https://www.weather-forecast.com/locations/Tel-Aviv-Yafo/forecasts/latest
city=input("entercity:")
url="https://www.weather-forecast.com/locations/" + city +"/forecasts/latest"
data=urllib.request.urlopen(url).read
data1=data.decode("uf-8")
print(data1)

但是当我想读取我的数据时,我得到了这个错误:

文件 “C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\urllib\request.py”,第 503 行,在 _call_chain 结果 = 函数(*args) 文件“C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\urllib\request.py”,第 649 行,位于 http_error_default 引发 HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError:HTTP 错误 404:未找到 进程以退出代码 1 结束

=> 有人可以帮助我并告诉我是什么问题吗? 谢谢:)

【问题讨论】:

  • 在打开之前尝试print(url),您的网址似乎返回 404:未找到
  • 你输入了什么?
  • 我输入的是特拉维夫市

标签: python module urllib


【解决方案1】:

您输入的城市名称一定有拼写错误。我尝试运行以下代码

 import re
 import urllib2
 city=input("enter city:")
 url="https://www.weather-forecast.com/locations/" + city +"/forecasts/latest"
 data=urllib2.urlopen(url).read()
 print(data.decode('utf-8'))

当我输入时它可以正常工作

输入城市:'纽约'

如果输入是,相同的代码会抛出 HTTPError: HTTP Error 404: Not Found 错误

输入城市:'newyolk'

你可以通过使用 try-except 语句来解决这个问题

city=input("enter city:")
url="https://www.weather-forecast.com/locations/" + city +"/forecasts/latest"
try:
    data=urllib2.urlopen(url).read()
    print(data.decode('utf-8'))
except:
    print('The entered city does not exist.Please enter a valid city name')

【讨论】:

  • 它现在给了我错误:C:\Users\User\PycharmProjects\1\venv\Scripts\python.exe C:/Users/User/p.py entercity:newyork Traceback(最近最后调用):文件“C:/Users/User/p.py”,第 8 行,在 data1 = data.decode("uf-8") AttributeError: 'function' object has no attribute 'decode' Process以退出代码 1 结束
  • 我遇到了同样的问题。我通过用data=urllib.request.urlopen(url).read()替换data=urllib.request.urlopen(url).read解决了这个问题
  • 问题是当我想使用 .decode 时它给了我一个错误
  • 我将read 更改为read() 然后当我使用decode() 时它停止抛出错误
【解决方案2】:

尝试使用 requests 库,它工作正常。

import requests

city = input("entercuty:")
url = "https://www.weather-forecast.com/locations/"+city+"/forecasts/latest"
data = requests.get(url)
print(data.status_code)
print(data.text)

将城市命名为“斯图加特”。

状态码:200

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 2017-10-20
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 2013-08-26
    相关资源
    最近更新 更多