我从 Yandex 编写了一个简单的天气解析器,但如果温度为负,那么它会显示一个问号。尝试了很多东西,但到目前为止没有任何帮助。请帮忙。
代码(Python 3.7)
import urllib
from bs4 import BeautifulSoup
def ParseWeatherYandex(city):
url = 'https://yandex.ru/pogoda/' + city
page = urllib.request.urlopen(url).read()
soup = BeautifulSoup(page, 'html.parser')
#getting time now, temperature and condition
day = soup.find('time', 'fact__time').contents
temperature = soup.find('span', 'temp__value').contents
weather_type = soup.find('div', 'link__condition day-anchor i-bem').contents
#parsing feeling temperature
t = soup.find('dl', 'term term_orient_h fact__feels-like')
t = ((t.div).span).contents
#joining lists in one
feels = list(soup.find('dt', 'term__label').contents) + t
print(day[0] + '\n' + 'Температура сейчас: '+ (temperature[0]).center(3), end='\n')
print('Погода: %s' %weather_type[0], end=', ')
print('%s %s' %(feels[0].lower(), feels[1]))
ParseWeatherYandex(input())
input()
input()
当请求托木斯克市时,我得到一个例外:
谷歌字符代码
unicode 2212
,我们发现这是一个 Unicode 减号 ('MINUS SIGN' (U+2212)
)。为了在控制台中正确显示,您可以愚蠢地
replace
将其替换为常规减号:样本输出: