Python группа робот послал City погоды

Метод 1: Получение содержимого HTML страницы, а затем, чтобы получить желаемый контент с помощью регулярных выражений

#!/usr/bin/env python
#coding=gbk
import requests
import urllib.request ,sys
import re
import time

def get_weather(provice,city):
    url="http://qq.ip138.com/weather/"+provice+'/'+city+'.htm'
    wetherhtml=urllib.request.urlopen(url)
    result=wetherhtml.read().decode('gb2312')
    f=open('weather.txt','wb')
    f.write(result.encode('gb2312'))
    f.close()

    regex1='>(\d*-\d*-\d*.+?)<'
    date=re.findall(regex1,result)

    regex2='alt="(.+?)" />'
    weather=re.findall(regex2,result)

    regex3='<td>(\d{1,2}.+)</td>'
    temperature=re.findall(regex3,result)

    length=len(date)
    t="未来5天天气预报:\n"
    msg=''
    for i in range(length):
        msg= msg+date[i]+" 天气:"+weather[i]+", 温度:<font color=\"warning\">"+temperature[i]+"</font>\n";
    return(t+msg)


#文字标记(markdown)机器人
def tony_bot_txt_markdown(boturl,provice,city,cityname):
    weather="下雨"
    temperature="20度"
    headers={"Content-Type":"text/plain"}
    city=get_weather(provice,city)
    data={
        "msgtype": "markdown",
 
        "markdown": {

        "content": cityname+city
        }
}
    res=requests.post(url=boturl,headers=headers,json=data)

#测试
tony_bot_txt_markdown('https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx','hunan','zhuzhou','株洲')

Способ 2: Если содержание случае JSon форматы спецификации

Fengli ":" <! [CDATA [<стадия 3]]> "" низкий ":" Низкая температура -3 ℃ "" Fengxiang ":" север "" типа ":" ясно "}, {" дата " : "четверг 21", "высокий": "высокая температура 9 ℃", "Fengli": "<! [CDATA [<стадии 3]]>", "низкий": "низкая температура -1 ℃", "Fengxiang": "север", "тип": "очистить"}, { "дата": "пятница 22", "высокий": "высокая температура 10 ℃", "Fengli" :! «<[CDATA [<стадии 3]] > «» низкий „:“ низкая температура 0 ℃ «» Fengxiang „:“ ветер юго-восточный «» тип „:“ облачный „}],“ ganmao „:“ мы будем иметь сильный процесс охлаждения, холод, и ветер, чем сильный, холодный легко, пожалуйста, обратите особое внимание, чтобы увеличить одежду теплый холод. "" Вэньд ":" - 1 "}," Статус ": 1000," убывание ":" OK «} Низкая температура -3 ℃ "" Fengxiang ":" север "" тип ":" очистить "}, {" Дата ":" четверг 21 "" высокий ":" высокая температура 9 ℃ "" Fengli ":" <! [CDATA [<стадия 3]]> "" низкий ":" низкая температура -1 ℃ "" Fengxiang ":" север "" типа ":" ясно "}, {" дата ":" 22 день пятница "" высокая ":" высокая температура 10 ℃ "" Fengli ":" <[CDATA [<стадия 3]]> "" низко! ":" низкая температура 0 ℃ "" Fengxiang ":" ветер юго-восточный " «Тип»: «облачный»}], «ganmao»: «будет сильным процесс охлаждения, холодная погода и сильный ветер, холод легко, пожалуйста, обратите особое внимание, чтобы увеличить одежду теплого холода. "" Вэньд ":" - 1 "}," Статус ": 1000," убывание ":" OK «} Низкая температура -3 ℃ "" Fengxiang ":" север "" тип ":" очистить "}, {" Дата ":" четверг 21 "" высокий ":" высокая температура 9 ℃ "" Fengli ":" <! [CDATA [<стадия 3]]> "" низкий ":" низкая температура -1 ℃ "" Fengxiang ":" север "" типа ":" ясно "}, {" дата ":" 22 день пятница "" высокая ":" высокая температура 10 ℃ "" Fengli ":" <[CDATA [<стадия 3]]> "" низко! ":" низкая температура 0 ℃ "" Fengxiang ":" ветер юго-восточный " «Тип»: «облачный»}], «ganmao»: «будет сильным процесс охлаждения, холодная погода и сильный ветер, холод легко, пожалуйста, обратите особое внимание, чтобы увеличить одежду теплого холода. "" Вэньд ":" - 1 "}," Статус ": 1000," убывание ":" OK «} Температура 9 ℃ "" Fengli ":" <! [CDATA [<стадия 3]]> "" низкий ":" Низкая температура -1 ℃ "" Fengxiang ":" север "" типа ":" ясно " }, { "дата": "Пятница 22", "высокий": "высокая температура 10 ℃", "Fengli": "<! [CDATA [<стадии 3]]>", "низкий": "низкая температура 0 ℃" «Fengxiang»: «Юго-Восточный ветер», «типа»: «облачный»}], «ganmao»: «будет сильный процесс охлаждения, холодная погода и сильный ветер, холод легко, пожалуйста, обратите особое внимание на увеличение одежды теплый холод. "" Вэньд ":" - 1 "}," Статус ": 1000," убывание ":" OK «} Температура 9 ℃ "" Fengli ":" <! [CDATA [<стадия 3]]> "" низкий ":" Низкая температура -1 ℃ "" Fengxiang ":" север "" типа ":" ясно " }, { "дата": "пятница 22", "высокий": "высокая температура 10 ℃", "Fengli": "<! [CDATA [<стадии 3]]>", "низкий": "низкая температура 0 ℃" «Fengxiang»: «Юго-Восточный ветер», «типа»: «облачный»}], «ganmao»: «будет сильный процесс охлаждения, холодная погода и сильный ветер, холод легко, пожалуйста, обратите особое внимание на увеличение одежды теплый холод. "" Вэньд ":" - 1 "}," Статус ": 1000," убывание ":" OK «} "" Low ":" Низкая температура 0 ℃ "" Fengxiang ":" ветер юго-восточный "" типа ":" облачный "}]," ganmao ":" будет иметь сильный процесс охлаждения, холодную погоду и сильный ветер , холод легко, пожалуйста, обратите особое внимание, чтобы увеличить одежду теплого холода. "" Вэньд ":" - 1 "}," Статус ": 1000," убывание ":" OK «} "" Low ":" Низкая температура 0 ℃ "" Fengxiang ":" ветер юго-восточный "" типа ":" облачный "}]," ganmao ":" будет иметь сильный процесс охлаждения, холодную погоду и сильный ветер , холод легко, пожалуйста, обратите особое внимание, чтобы увеличить одежду теплого холода. "" Вэньд ":" - 1 "}," Статус ": 1000," убывание ":" OK «}

#coding=gbk
import urllib.request
import gzip
import json

def get_weather():
    city_name = input('请输入城市名称:')
    url = 'http://wthrcdn.etouch.cn/weather_mini?city='+urllib.parse.quote(city_name)
    w_data = urllib.request.urlopen(url).read()
    w_data = gzip.decompress(w_data).decode('utf-8')
    w_dict = json.loads(w_data)
    return w_dict

wdata=get_weather();
if(wdata.get('desc')=='OK'):
    cityName=wdata.get('data').get('city')
    wendu=wdata.get('data').get('wendu')+"℃"
    tips=wdata.get('data').get('ganmao')
    forecast=wdata.get('data').get('forecast')
    today_date=forecast[0].get('date')
    today_high=forecast[0].get('high')
    today_fengli=forecast[0].get('fengli')
    print(today_fengli.replace('<![CDATA[','').replace(']]>',''))#<![CDATA[<3级]]>转成<3级
    isDisplay=input('是否显示未来4天的天气情况:')
    if(isDisplay=='是' or isDisplay=='Y' or isDisplay=='y'):
        for i in range(1,5):
            print(forecast[i].get('date')+','+forecast[i].get('high')+','+forecast[i].get('low')) 
else:
    print('输入的城市名称有错误!')

Метод 2 Lite

#coding=gbk
import json
import requests

whtml = requests.get('http://wthrcdn.etouch.cn/weather_mini?city=株洲')
wdata = json.loads(whtml.text)

print(wdata['data'])
print("\n")
for i in range(len(wdata['data']['forecast'])):
    print(wdata['data']['forecast'][i]['type'])

-i https://pypi.douban.com/simple pyinstaller установки PIP
pyinstaller -F -w -i xxx.ico yy.py
сгенерированный файл ехе ниже каталога дист

Опубликован 46 оригинальные статьи · вона похвала 9 · просмотров 3642

рекомендация

отblog.csdn.net/weixin_41896770/article/details/103120160