文章目录

  • 项目目标
  • 项目分析
  • 基础较好可直接看代码

项目目标

爬取高德地图上城市与对应所有与天气相关的所有参数

项目分析

1.打开谷歌游览器,输入网址:高德地图
2.键盘按F12进入开发者调试模式,点击Network,选择XHR也就是js发起的异步加载请求获取的网页数据。这样有利于我们快速找到城市天气接口。


3.如上图所示,我们找到了这个叫weather?adcode=610900的文件,这个weather就是天气,那么这个后面这个adcode这个参数我们还不得而知。我们先看看这个文件里面的内容把!

4.这不就是我们要找的吗,但是发现这个文件只有一个城市,那么是不是跟adcode有关呢,我们再去翻翻别的文件查看一下。

5.找到这个文件发现,这个adocde是一个参数,并且就代表了安康市,那刚才的天气是如何请求到的呢?让我们一探究竟!



6.如图可知:这个Qurery String Parametes就是需要构造的参数,我们又发现这个url后面跟着adcode参数,那么是不是有个文件是所有城市的adcode呢?

7.这里有个叫cityList…的文件,但是怎么里面就这一行没用的代码呢?这是因为获取当前版本号的数据可能没有更新,所以我们试着将版本号向前提,或者删除版本号参数。我们把url粘贴到网址上去。

8.这个图中的url版本号已经减了,所以已经看到了所有城市,但是这么杂乱无章怎么查看adcode的数据到底在哪呢,为了方便我是使用json解析器

9.可以看到我们解析成功,那么我们来看一下里面的结构:

10,这个键为hotCitys对应的值,里面就有我们要找的数据,已经发现找到了,并且是按全国来的,但是我们再继续找一下,将找到的这折叠起来。找了一圈,我们发现是按照不同分类的,按全国的,按省的,按字母排序的等等,但是最后我们发现这个叫cityByLetter里面的adcode的数据是最容易获取

11.那么我们写代码的思路是什么呢?
首先使用requests获取全国城市adcode的源码,并且转为json,方便取出adcode数据,再将城市名字对应adcode的数据进行url的拼接,进行二次requests请求,获取对应城市的天气情况。

基础较好可直接看代码

代码进行示例:
(1)首先看第一种,小白能看懂的。

import requests
import json# 定义爬取adcode的url
base_url = "https://www.amap.com/service/cityList?version=202021713"
# 发起请求
r = requests.get(base_url)
# 接受json数据
adcode_data = r.json()
# 经过分析,获取所有城市名称与adcode
adcode__data2 = adcode_data.get("data")
# print(adcode__data2)
adcode__data3 = adcode__data2.get("cityByLetter")
# print(adcode__data3)# 定义一个装多个带有adcode的字典的列表
adcode_list = []
for i, j in adcode__data3.items():for m in j:adcode_list.append(m)
# print(adcode_list)
# 进行遍历获取adcode
for count, i in enumerate(adcode_list):# 获取每个城市的adcode数据adcode = i.get("adcode")# 拼接完整的获取天气的urlbase_url = "https://www.amap.com/service/weather?adcode=" + adcoderesponse = requests.get(base_url)# 将数据转换为jsondata_json = response.json()weather = data_json.get('data').get('data')if weather == None:continueelse:# 输出天气与城市print("{}{}:{}".format(count, i.get("name"), weather[0].get('live').get("weather_name")))

(2)第二种,代码清新脱俗,需要较强的基础。

import requests,json,re
for j, k in requests.get("https://www.amap.com/service/cityList?").json()['data']['cityByLetter'].items():for m in k:response = requests.get("https://www.amap.com/service/weather?adcode=" + m['adcode']).json().get("data").get('data')if response == None:continueelse:print(m["name"], re.compile(r'[|{|}|[]|]').sub("", str(response[0])))

由于运行结果太长就不写了。
来一波,推送吧!
群号:781121386
群名:人生苦短,我学编程
欢迎大家加入我们,一起交流技术!!!

使用requests爬取高德地图国内所有城市的天气情况相关推荐

  1. python爬虫——requests爬取高德地图全国天气信息

    一.分析 在浏览器中搜索高德地图,按F12,点击搜索 可以查看到西安市对应的citycode是610100 cityList表示出城市信息,有可能有城市的编号,我们复制他的url查看 在json在线解 ...

  2. python爬取高德地图_爬虫实战:如何爬取高德地图?

    提起高德地图,咱们每一个人都不会陌生,高德地图是一款非常好用的地区服务软件,很多用户在出行的时候都会使用这款软件,日程用来导航,也可以用来打车,一次呼叫多种车型,用户可以在这里获得更好的服务,随时都可 ...

  3. 爬虫实战:如何爬取高德地图?

    提起高德地图,咱们每一个人都不会陌生,高德地图是一款非常好用的地区服务软件,很多用户在出行的时候都会使用这款软件,日程用来导航,也可以用来打车,一次呼叫多种车型,用户可以在这里获得更好的服务,随时都可 ...

  4. Python爬取高德地图各城市天气

    Python爬取高德地图各城市天气 爬虫练习项目之一.从高德地图json数据接口获取天气.可以获取某省的所有城市天气.高德地图的这个接口还能获取县城的天气,我只写到了市.有兴趣的朋友可以尝试一下. 完 ...

  5. 大神都已经在用python爬取高德地图了

    一. 分析网页结构 本篇博文就以高德地图展开:https://www.amap.com/ 在打开后,我们发现有一堆div标签,但是并没有我们需要的数据,这个时候就可以判定其为动态网页,这个时候,我们就 ...

  6. 你的未来有我导航----教你如何爬取高德地图

    简单一文教你如何爬取高德地图 目录 推荐 一. 分析网页结构 二.拿到相关网址 三.代码实现 3.1 查询所有城市名称和编号 3.2 根据编号查询天气 四.完整代码 五.保存结果 一. 分析网页结构 ...

  7. python爬取高德地图数据_你的未来有我导航----教你如何爬取高德地图

    简单一文教你如何爬取高德地图 目录 推荐 一. 分析网页结构 二.拿到相关网址 三.代码实现 3.1 查询所有城市名称和编号 3.2 根据编号查询天气 四.完整代码 五.保存结果 一. 分析网页结构 ...

  8. PYTHON爬取高德地图POI

    PYTHON爬取高德地图POI 使用高德地图API爬取POI数据,首先需要申请高德地图API的KEY和获取<POI分类编码表>,本实例的最后结果是根据不同的poi类型分别生成多个EXCEL ...

  9. Python爬取百度地图智慧交通-城市拥堵指数

    第一次写文章 分享一下我的大数据处理课程的一次作业,爬取百度地图智慧交通的城市拥堵指数内容,链接(以长春市为例):http://jiaotong.baidu.com/top/report/?cityc ...

  10. 爬取高德地图全国poi的爬虫

    基于python3.6的爬取高德全国poi数据的爬虫,稳定性更高,爬取效率更快,由于高德poi的数据量比较大,这里使用了mongodb和Elasticsearch作为存储,只需要修改key值和type ...

最新文章

  1. 20172318 2016-2017-2 《Java程序设计》第一周学习总结
  2. 学Java好还是学Python好?这里有些建议
  3. C++案例-员工分组
  4. js中时间戳与日期格式的相互转换
  5. c++中的set容器和multiset容器
  6. JDK源码解析之 Java.lang.StringBuilder
  7. MysqL的root用户不允许远程连接
  8. IP头TCP头的checksum校验和计算
  9. [USACO10FEB]购买巧克力Chocolate Buying
  10. 【Windows】合并分区教程(解决C盘空间不足)
  11. 计算机控制系统开环控制有什么特点,自动控制系统基本控制方式?各有什么特点?...
  12. android手机获取手机设备信息
  13. 考研英语大纲单词E~O与常用短语
  14. 软件测试面试题:优惠券发布后测试场景图和设计?
  15. Gopher China 2019 讲师专访-滴滴出行/R lab 高级专家工程师杜欢
  16. 聚类评估算法-轮廓系数(Silhouette Coefficient )
  17. 2021牛客暑期多校训练营2 F-Girlfriend
  18. 企业邮箱对比介绍,国内各大企业邮箱介个费用对比
  19. SQL Server 与Oracle 建表语句的不同之处
  20. Linux命令之mkdir命令

热门文章

  1. Pytorch-《Deep learning with pytorch》1.2.1训练imagenetmini
  2. java 日程表_Java实现 LeetCode 729 我的日程安排表 I(二叉树)
  3. Fern wifi cracker 无线破解工具——图解
  4. 百度扩容软件V.2.3版,第四代扩容带自助修复功能
  5. 车企进军手机市场,意在智能汽车
  6. 南京信息工程大学计算机科学与技术评级,晋升ESI排名全球前1‰,南京信息工程大学这个学科不简单!...
  7. 数据库上机实验八(视图)
  8. python 全栈开发,Day122(人工智能初识,百度AI)
  9. colorbox去除close关闭按钮,附上colorbox的基本使用方法
  10. 反向跟单——羊群效应