鱼C论坛

 找回密码
 立即注册
查看: 2362|回复: 13

[已解决]帮忙完善下我的代码

[复制链接]
发表于 2021-1-4 13:31:14 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 私はり 于 2021-1-4 17:37 编辑

这是题目要求:
编写程序从
https://www.amap.com/service/cityList?version=2020121611获得省会城市的坐标轴(x和y)和adcode
然后根据城市adcode编码组合到以下网址
https://www.amap.com/service/weather?adcode=510400
获得当前天气气候和明后两天的天气气候

我自己在网上搜了代码并修改了些,剩下的就不会做了

  1. import requests

  2. #获取城市以及对应的adcode
  3. def get_city():
  4.    
  5.     #确定url
  6.     base_url = 'https://www.amap.com/service/cityList?'
  7.     # 发送请求
  8.     response = requests.get(base_url,headers=headers)
  9.     # print(response.text)  
  10.    
  11.     #解析json数据
  12.     json_data = response.json()
  13.     # print(json_data) 得到的json数据放到在线json解析网站中,方便分析结构
  14.    
  15.     #获取adcode
  16.     #热门城市
  17.     city_adcode = []
  18.     for data in json_data['data']['cityData']['hotCitys']:
  19.         city_adcode.append((data['adcode'],data['name'],data['x'],data['y']))
  20.     #其他城市
  21.     #for data in json_data['data']['cityData']['otherCitys']:
  22.         #city_adcode.append((data['adcode'],data['name']))
  23.     return city_adcode
  24.     print(city_adcode)

  25. def get_weather(adcode,city_name,X,Y):
  26.     '''
  27.     获取城市天气
  28.     Query String Parameters
  29.     adcode:500000
  30.     '''
  31.     #基础url
  32.     base_url = 'https://www.amap.com/service/weather?adcode={}'.format(adcode)
  33.     response = requests.get(base_url, headers=headers)  #发送请求,获取响应
  34.     json_data = response.json()  #获取json数据
  35.     #通过得到的json数据,在在线解析网站中解析后,分析其结构,找到要获取的在哪一个字典或者列表列表
  36.     #分层的取出来即可
  37.     if json_data['data']['result']=='true':
  38.         weather = json_data['data']['data'][0]['forecast_data'][0]['weather_name']  #当前天气
  39.         #最大温度
  40.         max_temp = json_data['data']['data'][0]['forecast_data'][0]['max_temp']
  41.         #最小温度
  42.         min_temp = json_data['data']['data'][0]['forecast_data'][0]['min_temp']
  43.         # print(weather, max_temp, min_temp)
  44.         dic = {}
  45.         dic['城市'] = city_name
  46.         dic['adcode'] = adcode
  47.         dic['X'] = X
  48.         dic['Y'] = Y
  49.         dic['天气'] = weather
  50.         dic['温度'] = '{}/{}℃'.format(min_temp,max_temp)
  51.         print(dic)
  52.         
  53.         

  54. def main():
  55.     city_adcode = get_city()
  56.     # print(city_adcode)
  57.     #将每个城市的adcode传给get_weather
  58.     #city_adcode有城市和adcode
  59.     for i in city_adcode:
  60.         adcode = i[0]
  61.         city_name = i[1]
  62.         X = i[2]
  63.         Y = i[3]
  64.         get_weather(adcode,city_name,X,Y)


  65.    
  66. if __name__ == '__main__':
  67.    
  68.     headers = {
  69.         'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537',
  70.         'X-Requested-With': 'XMLHttpRequest',
  71.     }
  72.     main()
复制代码
最佳答案
2021-1-4 13:31:15
本帖最后由 wp231957 于 2021-1-7 16:54 编辑
私はり 发表于 2021-1-7 11:58
就是提取的城市 这是提取的热门城市 我要提取省会会城市


是这些数据吗

import requests

base_url = 'https://www.amap.com/service/cityList?'
response = requests.get(base_url)
json_data = response.json()

zd=json_data["data"]["cityData"]["provinces"]
for x in zd:
   if len(zd[x]["cities"])>0 :
      print(zd[x]["adcode"],zd[x]["name"],zd[x]["cities"][0]["name"])
   else:   
      print(zd[x]["adcode"],zd[x]["name"])
'''
D:\wp>py wp\wp1.py
110000 北京
120000 天津
130000 河北 石家庄
140000 山西 太原
150000 内蒙古 呼和浩特
210000 辽宁 沈阳
220000 吉林 长春
230000 黑龙江 哈尔滨
310000 上海
320000 江苏 南京
330000 浙江 杭州
340000 安徽 合肥
350000 福建 福州
360000 江西 南昌
370000 山东 济南
410000 河南 郑州
420000 湖北 武汉
430000 湖南 长沙
440000 广东 广州
450000 广西 南宁
460000 海南 海口
500000 重庆
510000 四川 成都
520000 贵州 贵阳
530000 云南 昆明
540000 西藏 拉萨
610000 陕西 西安
620000 甘肃 兰州
630000 青海 西宁
640000 宁夏 银川
650000 新疆 乌鲁木齐
710000 台湾
810000 香港
820000 澳门
'''   
又简单的修正一下

最佳答案

查看完整内容

是这些数据吗 import requests base_url = 'https://www.amap.com/service/cityList?' response = requests.get(base_url) json_data = response.json() zd=json_data["data"]["cityData"]["provinces"] for x in zd: if len(zd[x]["cities"])>0 : print(zd[x]["adcode"],zd[x]["name"],zd[x]["cities"][0]["name"]) else: print(zd[x]["adcode"],zd[x]["name"]) ''' D:\wp>py wp\wp1. ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-4 13:31:15 | 显示全部楼层    本楼为最佳答案   
本帖最后由 wp231957 于 2021-1-7 16:54 编辑
私はり 发表于 2021-1-7 11:58
就是提取的城市 这是提取的热门城市 我要提取省会会城市


是这些数据吗

import requests

base_url = 'https://www.amap.com/service/cityList?'
response = requests.get(base_url)
json_data = response.json()

zd=json_data["data"]["cityData"]["provinces"]
for x in zd:
   if len(zd[x]["cities"])>0 :
      print(zd[x]["adcode"],zd[x]["name"],zd[x]["cities"][0]["name"])
   else:   
      print(zd[x]["adcode"],zd[x]["name"])
'''
D:\wp>py wp\wp1.py
110000 北京
120000 天津
130000 河北 石家庄
140000 山西 太原
150000 内蒙古 呼和浩特
210000 辽宁 沈阳
220000 吉林 长春
230000 黑龙江 哈尔滨
310000 上海
320000 江苏 南京
330000 浙江 杭州
340000 安徽 合肥
350000 福建 福州
360000 江西 南昌
370000 山东 济南
410000 河南 郑州
420000 湖北 武汉
430000 湖南 长沙
440000 广东 广州
450000 广西 南宁
460000 海南 海口
500000 重庆
510000 四川 成都
520000 贵州 贵阳
530000 云南 昆明
540000 西藏 拉萨
610000 陕西 西安
620000 甘肃 兰州
630000 青海 西宁
640000 宁夏 银川
650000 新疆 乌鲁木齐
710000 台湾
810000 香港
820000 澳门
'''   
又简单的修正一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-5 09:43:02 | 显示全部楼层
貌似只有今明两天的天气?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-5 10:43:04 | 显示全部楼层
z5560636 发表于 2021-1-5 09:43
貌似只有今明两天的天气?

我也感觉是
我只看到了今明两天的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-5 11:28:30 | 显示全部楼层
私はり 发表于 2021-1-5 10:43
我也感觉是
我只看到了今明两天的

去看看官网的demo  貌似,能提供5天的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-5 13:54:23 | 显示全部楼层
只差把城市变成省会城市了
另外我这种改变一点代码 逐行添加这种写法是不是很垃圾啊
我感觉我该网上的代码基本上都是添加

  1. import requests

  2. #获取城市以及对应的adcode
  3. def get_city():
  4.    
  5.     #确定url
  6.     base_url = 'https://www.amap.com/service/cityList?'
  7.     # 发送请求
  8.     response = requests.get(base_url,headers=headers)
  9.     # print(response.text)  
  10.    
  11.     #解析json数据
  12.     json_data = response.json()
  13.     # print(json_data) 得到的json数据放到在线json解析网站中,方便分析结构
  14.    
  15.     #获取adcode
  16.     #热门城市
  17.     city_adcode = []
  18.     for data in json_data['data']['cityData']['hotCitys']:
  19.         city_adcode.append((data['adcode'],data['name'],data['x'],data['y']))
  20.     #其他城市
  21.     #for data in json_data['data']['cityData']['otherCitys']:
  22.         #city_adcode.append((data['adcode'],data['name']))
  23.     return city_adcode
  24.     print(city_adcode)

  25. def get_weather(adcode,city_name,X,Y):
  26.     '''
  27.     获取城市天气
  28.     Query String Parameters
  29.     adcode:500000
  30.     '''
  31.     #基础url
  32.     base_url = 'https://www.amap.com/service/weather?adcode={}'.format(adcode)
  33.     response = requests.get(base_url, headers=headers)  #发送请求,获取响应
  34.     json_data = response.json()  #获取json数据
  35.     #通过得到的json数据,在在线解析网站中解析后,分析其结构,找到要获取的在哪一个字典或者列表列表
  36.     #分层的取出来即可
  37.     if json_data['data']['result']=='true':
  38.         weather = json_data['data']['data'][0]['forecast_data'][0]['weather_name']  #当前天气
  39.         #最大温度
  40.         max_temp = json_data['data']['data'][0]['forecast_data'][0]['max_temp']
  41.         #最小温度
  42.         min_temp = json_data['data']['data'][0]['forecast_data'][0]['min_temp']
  43.         t_weather = json_data['data']['data'][1]['forecast_data'][0]['weather_name']  #明天天气
  44.         #最大温度
  45.         t_max_temp = json_data['data']['data'][1]['forecast_data'][0]['max_temp']
  46.         #最小温度
  47.         t_min_temp = json_data['data']['data'][1]['forecast_data'][0]['min_temp']
  48.         # print(weather, max_temp, min_temp)
  49.         dic = {}
  50.         dic['城市'] = city_name
  51.         dic['adcode'] = adcode
  52.         dic['X'] = X
  53.         dic['Y'] = Y
  54.         dic['天气'] = weather
  55.         dic['温度'] = '{}/{}℃'.format(min_temp,max_temp)
  56.         dic['明日天气'] = t_weather
  57.         dic['明日温度'] = '{}/{}℃'.format(t_min_temp,t_max_temp)
  58.         print(dic)
  59.         
  60.         

  61. def main():
  62.     city_adcode = get_city()
  63.     # print(city_adcode)
  64.     #将每个城市的adcode传给get_weather
  65.     #city_adcode有城市和adcode
  66.     for i in city_adcode:
  67.         adcode = i[0]
  68.         city_name = i[1]
  69.         X = i[2]
  70.         Y = i[3]
  71.         get_weather(adcode,city_name,X,Y)


  72.    
  73. if __name__ == '__main__':
  74.    
  75.     headers = {
  76.         'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537',
  77.         'X-Requested-With': 'XMLHttpRequest',
  78.     }
  79.     main()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-6 17:16:25 | 显示全部楼层
问题解决了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-6 20:16:58 | 显示全部楼层

没有 你可以帮我操作哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-7 07:53:42 | 显示全部楼层
私はり 发表于 2021-1-6 20:16
没有 你可以帮我操作哈

我搞不了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-7 08:44:43 | 显示全部楼层
私はり 发表于 2021-1-5 13:54
只差把城市变成省会城市了
另外我这种改变一点代码 逐行添加这种写法是不是很垃圾啊
我感觉我该网上的代 ...

啥叫把城市变成省会城市
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-7 11:58:25 | 显示全部楼层
wp231957 发表于 2021-1-7 08:44
啥叫把城市变成省会城市

就是提取的城市 这是提取的热门城市 我要提取省会会城市
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-8 12:48:47 | 显示全部楼层
wp231957 发表于 2021-1-7 14:53
是这些数据吗

import requests

就是这种  可以在我的代码上面修改么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-8 16:19:15 | 显示全部楼层
私はり 发表于 2021-1-8 12:48
就是这种  可以在我的代码上面修改么

核心代码  都给你了  你就自己弄呗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-8 16:23:55 | 显示全部楼层
wp231957 发表于 2021-1-8 16:19
核心代码  都给你了  你就自己弄呗

好吧 谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-14 00:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表