获取城市天气预报,免费!

以下代码也是参考自网友分享,已经在本地测试通过。无页面显示,如果想用的话欢迎。有问题欢迎与我联系。
# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup

def get_weather_info(url, choose_all=True):
    try:
        response = requests.get(url, timeout=2)
        # 发起请求并设置超时时间为两秒
        soup = BeautifulSoup(response.text, 'html.parser')
        # 解析HTML
        # 获取.day div的文本内容
        day_divs = soup.find_all('div', class_='day')
        day_text_list = [div.get_text() for div in day_divs]
        # 输出今天的城市和天气信息
        if choose_all:
            result = [",".join([item.strip() for item in day_text.split("\n") if item.strip()]) for day_text in day_text_list]
            #print(result)
            #print("result")
            return result
        else:
            for day_text in day_text_list:
                day_info = [item.strip() for item in day_text.split("\n") if item.strip()]
            print("day_info")
            #print(day_info)
            return day_info
    except requests.exceptions.RequestException as e:
        print("Error occurred:", e)
        return None

# 城市名和链接可以在https://weather.cma.cn/中添加更多城市,名字和链接对应的

href_list = ['58367', '51463', '52889', '54511', '58238', '58606', '58321', '53463', '50953', '53772', '59287', '56294',
             '55591', '56778', '58457', '57494', '54342', '54823', '59758', '59493', '53698', '58847', '52866', '57036',
             '57816', '57083', '57516', '53614', '54161', '57679', '54517', '45005', '45011', '58968', '59431',
             '062721', '003772', '068816', '061641', 'G05021', '065563', '063260', '064950', 'G05020', '063980',
             '061832', '065472', '067665', '067341', '064500', 'G05019', '061442', 'G05025', '063125', '063450',
             '063740', '065125', '064700', 'G05024', '067775', '060390', 'G05018', '063894', '064390', '008589',
             '063705', 'G05017', '065387', '064387', '060135', '067083', '060715', '040103', '062010', '062366',
             '064810', 'G05009', '061291', '047108', '044292', '048698', '097390', '048647', '048074', '048991',
             '048820', '048940', '096315', '041571', '043466', '041923', '044454', '043555', '041217', '040582',
             '017130', '041170', '041256', '040100', '040438', '041150', '040754', '040650', '040948', '037864',
             '037545', '037788', '035188', '038353', '038836', '038457', '048455', '096741', '098425', '041404',
             'G05010', '027612', '011035', '016716', '012375', '013274', '011520', '015614', '011816', '013615',
             '014240', '014654', '013462', '026038', '026730', '014014', '012843', '013586', '015420', '026422',
             '033345', '026850', '033815', 'G05005', '008535', 'G05011', '093439', '094035', 'G05007', 'G05022',
             'G05004', 'G05014', 'G05013', 'G05003', 'G05012', '085574', 'G05023', '006240', '086580', '080415',
             'G05016', 'G84071', '084628', '078762', '078806', 'G05015', 'G05006', '078970', '078862', 'G05026',
             'G05008', 'G05002', '078224', 'G05001', '047662', '072405', '006180', '094926', '076680', '040080',
             '001492', '040270', '061052', '083377', '007149', '087582', '006451', '047058', '042299', '076405',
             '002464', '042182', '010385', '065344', '071628', '064650', '065503', '016242', '040183', '067001',
             '002974', '061990', '064210', '038880', '008221', 'map', '58367', '51463', '52889', '54511', '58238',
             '58606', '58321', '53463', '50953', '53772', '59287', '56294', '55591', '56778', '58457', '57494', '54342',
             '54823', '59758', '59493', '53698', '58847', '52866', '57036', '57816', '57083', '57516', '53614', '54161',
             '57679', '54517', '45005', '45011', '58968', '59431', '54511', '53463', '53772', '53698', '54517', '54401',
             '54610', '54602', '54534', '54515', '54423', '54616', '54449', '54702', '53798', '53892', '53868', '53588',
             '53764', '53487', '53778', '53674', '53771', '53976', '53578', '53959', '53882', '53782', '53878', '53543',
             '53513', '50838', '53512', '53068', '53446', '54113', '50527', '54218', '54135', '54102', '52576', '53602',
             '53480', '50953', '54342', '54161', '54172', '54157', '54292', '50946', '54273', '54266', '54291', '50936',
             '54371', '54260', '54363', '54377', '50971', '50774', '50873', '50442', '50973', '50884', '50850', '50842',
             '50136', '54094', '50741', '50853', '54096', '50978', '50775', '50468', '50745', '54497', '54662', '54353',
             '54324', '54346', '54563', '54471', '54453', '54347', '54249', '54337', '54237', '54339', '54338', '58367',
             '58238', '58606', '58321', '58457', '54823', '58847', '54736', '54938', '54774', '54714', '54945', '58024',
             '54827', '54915', '54830', '54734', '54843', '54765', '54806', '54828', '54906', '54857', '58102', '58311',
             '58424', '58433', '58122', '58326', '58427', '58116', '58224', '58236', '58334', '58221', '58429', '58203',
             '58336', '58531', '58251', '58259', '58131', '58343', '58027', '58245', '58354', '58145', '58246', '57494',
             '57083', '57679', '57051', '57297', '57178', '57195', '58005', '53898', '57171', '57091', '53986', '57073',
             '53978', '57186', '58207', '54900', '53982', '57089', '57290', '53990', '57485', '57256', '57590', '57483',
             '57482', '57370', '57461', '57447', '57279', '57475', '57362', '57476', '57377', '57278', '57496', '57381',
             '57399', '57498', '58407', '57978', '57776', '57649', '57763', '57584', '57662', '57558', '57749', '59287',
             '59758', '59493', '59289', '59485', '59471', '59087', '59288', '57996', '59298', '59315', '59117',
             '591170', '59316', '59501', '59293', '59280', '59658', '59312', '59488', '59664', '592780', '59659',
             '59663', '59082', '59480', '59313', '59278', '59473', '59951', '59948', '59838', '59842', '59940', '59945',
             '59845', '59851', '59854', '59856', '59843', '59849', '59855', '59848', '59954', '59644', '59425', '59242',
             '59046', '51463', '52889', '52866', '57036', '53614', '57048', '57143', '57245', '57016', '53845', '53646',
             '57127', '57045', '53947', '52984', '52532', '57006', '52995', '53915', '53829', '52652', '52679', '56096',
             '52896', '52533', '52856', '52754', '52875', '52737', '52818', '56065', '52853', '56029', '56043', '51431',
             '51243', '51238', '51573', '51828', '52203', '51709', '51133', '51379', '51656', '51368', '51357', '51356',
             '51628', '56294', '55591', '56778', '57816', '57516', '57348', '57522', '57536', '56386', '57503', '57411',
             '56492', '56385', '57313', '57206', '57415', '56198', '56666', '57508', '57602', '56146', '56391', '56196',
             '56396', '56571', '56298', '57328', '57405', '56171', '56287', '56951', '56651', '56748', '56751', '56964',
             '56994', '56586', '56959', '56768', '56844', '56875', '56838', '56975', '56533', '56543', '57907', '57825',
             '57806', '45005', '45011', '58968', '59562', '59158', '59358', '59354', '58964', '59162', '59152', '58965',
             '59362', '59554', '047108', '044292', '048698', '097390', '048647', '048097', '048074', '048991', '048820',
             '048900', '048940', '096315', '041571', '041780', '041530', '043466', '041923', '044454', '043555',
             '041217', '040582', '017060', '017130', '041170', '041256', '040100', '040438', '040477', '041024',
             '041030', '041150', '040800', '040754', '040848', '040745', '040650', '040948', '040990', '037864',
             '037545', '037788', '035188', '038353', '038836', '038457', '048455', '097230', '096741', '003772',
             'G05010', '027459', '031561', '028440', '031735', '026063', '029634', '031960', '027612', '011035',
             '016716', '012375', '013274', '011520', '015614', '011816', '013615', '013334', '014240', '014654',
             '013462', '026038', '026730', '014014', '012843', '013586', '015420', '026422', '033345', '026850',
             '033815', 'G05005', '008535', '016061', 'G05011', '062315', '006180', '001492', '008181', '007149',
             '006451', '002464', '006700', '003334', '010385', '010147', '010637', '062721', '068816', '068263',
             '068361', '061641', 'G05021', '065563', '065578', '063260', '064950', 'G05020', '063980', '061832',
             '065472', '067665', '067341', '064500', 'G05019', '061442', 'G05025', '063125', '063450', '063740',
             '065201', '065125', '064700', 'G05024', '067775', '060390', 'G05018', '063894', '064390', '008589',
             '063705', 'G05017', '065387', '064387', '060135', '060230', '067083', '060715', '040103', '062010',
             '062405', '062366', '064810', 'G05009', '061291', '078762', '078806', 'G05015', 'G05006', '078970',
             '078862', 'G05026', 'G05008', 'G05002', '060155', '078224', 'G05001', '072494', '072219', '072243',
             '072405', '071877', '083780', '071123', '071879', '076680', '091182', '071624', '072205', '072386',
             '072509', '072295', '071628', '071892', '071843', '072503', '072530', '071627', '072793', '072259',
             '072202', '071714', '085574', 'G05023', '006240', '085283', '086580', '080415', 'G05016', 'G84071',
             '084628', '083377', '087582', '076405', '080222', '016080', '083755', '007650', '093780', '093110',
             '093439', '094035', 'G05007', 'G05022', 'G05004', 'G05014', 'G05013', 'G05003', 'G05012', '094926',
             '094866', '094578', '094767', '094610', '094672']

text_list = ['上海', '乌鲁木齐', '兰州', '北京', '南京', '南昌', '合肥', '呼和浩特', '哈尔滨', '太原', '广州', '成都',
             '拉萨', '昆明', '杭州', '武汉', '沈阳', '济南', '海口', '深圳', '石家庄', '福州', '西宁', '西安', '贵阳',
             '郑州', '重庆', '银川', '长春', '长沙', '天津', '香港', '澳门', '台北', '南宁', '喀土穆', '伦敦', '开普敦',
             '达喀尔', '弗里敦', '亚穆苏克罗', '摩加迪沙', '雅温得', '朱巴', '维多利亚', '科纳克里', '阿克拉', '卢萨卡',
             '马普托', '利伯维尔', '温得和克', '努瓦克肖特', '罗安达', '吉布提市', '亚的斯亚贝巴', '内罗毕', '阿布贾',
             '恩贾梅纳', '布拉柴维尔', '哈拉雷', '阿尔及尔', '多多马', '达累斯萨拉姆', '布琼布拉', '普拉亚', '坎帕拉',
             '班珠尔', '洛美', '基加利', '拉巴特', '塔那那利佛', '突尼斯市', '的黎波里', '的黎波里', '开罗', '马拉博',
             '蒙罗维亚', '巴马科', '首尔', '乌兰巴托', '新加坡市', '帝力', '吉隆坡', '内比都', '金边', '河内', '万象',
             '斯里巴加湾市', '伊斯兰堡', '科伦坡', '达卡', '加德满都', '马累', '阿布扎比', '科威特城', '安卡拉', '多哈',
             '马斯喀特', '贝鲁特', '利雅得', '麦纳麦', '德黑兰', '巴格达', '喀布尔', '巴库', '第比利斯', '埃里温',
             '阿斯塔纳', '比什凯克', '杜尚别', '塔什干', '曼谷', '雅加达', '马尼拉', '萨那', '尼科西亚', '莫斯科',
             '维也纳', '雅典', '华沙', '贝尔格莱德', '布拉格', '索非亚', '布拉迪斯拉发', '地拉那', '萨格勒布',
             '萨拉热窝', '波德戈里察', '塔林', '维尔纽斯', '卢布尔雅那', '布达佩斯', '斯科普里', '布加勒斯特', '里加',
             '基辅', '明斯克', '基希讷乌', '瓦莱塔', '里斯本', '卢森堡', '惠灵顿', '莫尔斯比港', '阿皮亚', '阿洛菲',
             '苏瓦', '帕利基尔', '阿瓦鲁阿', '努库阿洛法', '维拉港', '圣地亚哥', '乔治敦', '阿姆斯特丹', '蒙得维的亚',
             '加拉加斯', '帕拉马里博', '基多', '利马', '圣何塞', '巴拿马城', '圣萨尔瓦多', '圣多明各', '西班牙港',
             '圣约翰', '罗索', '圣乔治', '布里奇顿', '哈瓦那', '金斯敦', '东京', '华盛顿', '哥本哈根', '堪培拉',
             '墨西哥城', '大马士革', '奥斯陆', '安曼', '尼亚美', '巴西利亚', '巴黎', '布宜诺斯艾利斯', '布鲁塞尔',
             '平壤', '廷布', '拉巴斯', '斯德哥尔摩', '新德里', '柏林', '波多诺伏', '渥太华', '班吉', '瓦加杜古', '罗马',
             '耶路撒冷', '莫罗尼', '赫尔辛基', '路易港', '金沙萨', '阿什哈巴德', '马德里', '城市预报', '上海',
             '乌鲁木齐', '兰州', '北京', '南京', '南昌', '合肥', '呼和浩特', '哈尔滨', '太原', '广州', '成都', '拉萨',
             '昆明', '杭州', '武汉', '沈阳', '济南', '海口', '深圳', '石家庄', '福州', '西宁', '西安', '贵阳', '郑州',
             '重庆', '银川', '长春', '长沙', '天津', '香港', '澳门', '台北', '南宁', '北京', '呼和浩特', '太原',
             '石家庄', '天津', '张家口', '任丘', '保定', '唐山', '廊坊', '承德', '沧州', '秦皇岛', '衡水', '邢台',
             '邯郸', '临汾', '五台山', '吕梁', '大同', '平遥', '忻州', '文水', '晋城', '朔州', '运城', '长治', '阳泉',
             '黎城', '东胜', '临河', '乌兰浩特', '乌海', '二连浩特', '包头', '巴林右旗', '海拉尔', '赤峰', '通辽',
             '锡林浩特', '阿拉善右旗', '阿拉善左旗', '集宁', '哈尔滨', '沈阳', '长春', '吉林', '四平', '延吉', '松原',
             '桦甸', '梅河口', '珲春', '白城', '白山', '辽源', '通化', '集安', '七台河', '伊春', '佳木斯', '加格达奇',
             '勃利', '双鸭山', '大庆', '杜蒙', '漠河', '牡丹江', '甘南', '绥化', '绥芬河', '鸡西', '鹤岗', '黑河',
             '齐齐哈尔', '丹东', '大连', '新宾', '朝阳', '本溪', '瓦房店', '营口', '葫芦岛', '辽阳', '铁岭', '锦州',
             '阜新', '鞍山', '盘山', '上海', '南京', '南昌', '合肥', '杭州', '济南', '福州', '东营', '临沂', '威海',
             '德州', '日照', '枣庄', '泰安', '济宁', '淄博', '滨州', '潍坊', '烟台', '聊城', '莱芜', '菏泽', '青岛',
             '亳州', '六安', '安庆', '宣城', '宿州', '巢湖', '池州', '淮北', '淮南', '滁州', '芜湖', '蚌埠', '铜陵',
             '阜阳', '马鞍山', '黄山市', '东台', '南通', '宿迁', '常州', '徐州', '扬州', '无锡', '楚州', '泰州', '武汉',
             '郑州', '长沙', '三门峡', '信阳市', '南阳市', '周口', '商丘', '安阳市', '平顶山', '开封市', '新乡市',
             '洛阳市', '济源', '漯河市', '潢川', '濮阳', '焦作市', '许昌', '驻马店市', '鹤壁', '仙桃', '十堰', '咸宁',
             '天门', '孝感', '宜城', '宜昌', '恩施', '枣阳', '潜江', '神农架', '荆州', '荆门', '襄阳', '鄂州', '随州',
             '麻城', '黄冈', '黄石', '临武', '南岳', '吉首', '娄底', '岳阳', '常德', '张家界', '怀化', '广州', '海口',
             '深圳', '东莞', '中山', '云浮', '佛冈', '佛山', '南雄', '惠州', '揭阳', '梅县', '梅州', '汕头', '汕尾',
             '河源', '清远', '湛江', '潮州', '珠海', '电白', '肇庆', '茂名', '阳江', '韶关', '顺德', '饶平', '高要',
             '鹤山', '万宁', '三亚', '东方', '临高', '乐东', '保亭', '儋州', '定安', '屯昌', '文昌', '澄迈', '琼中',
             '琼海', '白沙', '陵水', '北海', '崇左', '来宾', '柳州', '乌鲁木齐', '兰州', '西宁', '西安', '银川', '咸阳',
             '商洛', '安康', '宝鸡', '延安', '榆林', '汉中', '渭南', '铜川', '临夏', '嘉峪关', '天水', '安定', '崆峒',
             '庆城', '张掖', '武威', '武都', '白银', '酒泉', '共和', '刚察', '平安', '德令哈', '格尔木', '河南', '海晏',
             '玉树', '玛沁', '伊宁市', '克拉玛依', '博乐', '吐鲁番', '和田', '哈密', '喀什', '塔城', '奇台', '库尔勒',
             '昌吉', '沙湾', '石河子', '阿克苏', '成都', '拉萨', '昆明', '贵阳', '重庆', '奉节', '涪陵', '黔江', '乐山',
             '内江', '南充', '宜宾', '峨眉山', '巴中', '广元', '广安', '德阳', '攀枝花', '泸县', '泸州', '甘孜', '眉山',
             '绵阳', '自贡', '西昌', '资阳', '达州', '遂宁', '阿坝', '雅安', '临沧', '丽江', '保山', '大理', '思茅',
             '文山', '昭通', '景洪', '楚雄', '潞西', '玉溪', '瑞丽', '红河', '贡山', '香格里拉', '兴义', '凯里', '安顺',
             '香港', '澳门', '台北', '台东', '台中', '台南', '嘉义', '基隆', '宜兰', '新竹', '桃园', '花莲', '高雄',
             '首尔', '乌兰巴托', '新加坡市', '帝力', '吉隆坡', '仰光', '内比都', '金边', '河内', '胡志明市', '万象',
             '斯里巴加湾市', '伊斯兰堡', '卡拉奇', '白沙瓦', '科伦坡', '达卡', '加德满都', '马累', '阿布扎比',
             '科威特城', '伊斯坦布尔', '安卡拉', '多哈', '马斯喀特', '贝鲁特', '利雅得', '吉达', '吉达', '麦加',
             '麦纳麦', '伊斯法罕', '德黑兰', '设拉子', '马什哈德', '巴格达', '喀布尔', '坎大哈', '巴库', '第比利斯',
             '埃里温', '阿斯塔纳', '比什凯克', '杜尚别', '塔什干', '曼谷', '巴里岛', '雅加达', '伦敦', '尼科西亚',
             '下诺夫哥罗德', '共青城', '叶卡捷琳堡', '哈巴罗夫斯克', '圣彼得堡', '新西伯利亚', '符拉迪沃斯托克',
             '莫斯科', '维也纳', '雅典', '华沙', '贝尔格莱德', '布拉格', '索非亚', '布拉迪斯拉发', '地拉那', '斯普利特',
             '萨格勒布', '萨拉热窝', '波德戈里察', '塔林', '维尔纽斯', '卢布尔雅那', '布达佩斯', '斯科普里',
             '布加勒斯特', '里加', '基辅', '明斯克', '基希讷乌', '瓦莱塔', '里斯本', '都灵', '卢森堡', '亚历山大',
             '哥本哈根', '奥斯陆', '巴塞罗那', '巴黎', '布鲁塞尔', '斯德哥尔摩', '日内瓦', '曼彻斯特', '柏林', '汉堡',
             '法兰克福', '喀土穆', '开普敦', '比勒陀利亚', '约翰内斯堡', '达喀尔', '弗里敦', '亚穆苏克罗', '阿比让',
             '摩加迪沙', '雅温得', '朱巴', '维多利亚', '科纳克里', '阿克拉', '卢萨卡', '马普托', '利伯维尔', '温得和克',
             '努瓦克肖特', '罗安达', '吉布提市', '亚的斯亚贝巴', '内罗毕', '拉各斯', '阿布贾', '恩贾梅纳', '布拉柴维尔',
             '哈拉雷', '阿尔及尔', '多多马', '达累斯萨拉姆', '布琼布拉', '普拉亚', '坎帕拉', '班珠尔', '洛美', '基加利',
             '拉巴特', '马拉喀什', '塔那那利佛', '突尼斯市', '的黎波里', '的黎波里', '卢克索', '开罗', '马拉博',
             '蒙罗维亚', '巴马科', '圣何塞', '巴拿马城', '圣萨尔瓦多', '圣多明各', '西班牙港', '圣约翰', '罗索',
             '圣乔治', '布里奇顿', '卡萨布兰卡', '哈瓦那', '金斯敦', '三藩市', '亚特兰大', '休斯敦', '华盛顿',
             '卡尔加里', '圣保罗', '埃德蒙顿', '埃德蒙顿', '墨西哥城', '夏威夷', '多伦多', '奥兰多', '拉斯维加斯',
             '波士顿', '洛杉矶', '渥太华', '温哥华', '温尼泊', '纽约', '芝加哥', '蒙特利尔', '西雅图', '达拉斯',
             '迈阿密', '魁北克', '圣地亚哥', '乔治敦', '阿姆斯特丹', '苏克雷', '蒙得维的亚', '加拉加斯', '帕拉马里博',
             '基多', '利马', '巴西利亚', '布宜诺斯艾利斯', '拉巴斯', '波哥大', '米兰', '里约热内卢', '马塞',
             '克赖斯特彻奇', '奥克兰', '惠灵顿', '莫尔斯比港', '阿皮亚', '阿洛菲', '苏瓦', '帕利基尔', '阿瓦鲁阿',
             '努库阿洛法', '维拉港', '堪培拉', '墨尔本', '布里斯班', '悉尼', '珀斯', '阿德来德']

chengshi = input("输入需查询城市:")

url = 'https://weather.cma.cn/web/weather/' + href_list[text_list.index(chengshi)]

weather_info = get_weather_info(url)

if weather_info:
    print(url)

print("城市:", chengshi)

print(weather_info)
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/m0_38111284/article/details/141124927

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_38111284

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值