一、 分析网页结构

本篇博文就以高德地图展开:https://www.amap.com/

在打开后,我们发现有一堆div标签,但是并没有我们需要的数据,这个时候就可以判定其为动态网页,这个时候,我们就需要找接口

点击网络标签,我们可以看到网页向服务器发送了很多请求,数据很多,找起来太费时间

我们点击XHR分类,可以减少很多不必要的文件,省下很多时间。

XHR类型即通过XMLHttpRequest方法发送的请求,它可以在后台与服务器交换数据,这意味着可以在不加载整个网页的情况下,对网页某部分的内容进行更新。也就是说,向数据库请求然后得到响应的数据是XHR类型的

然后我们就可以在XHR类型下开始一个个找,找到了如下的数据

通过查看Headers获得URL

打开之后,我们发现其为近两天的天气情况。

打开后我们可以看到上面的情况,这是个json格式的文件。然后,它的数据信息是以字典的形式来保存的,而数据是都保存在“data”这个键值里面。

ok找到了json数据,我们来对比下看是否是我们找的东西

通过对比,数据正好对应,那就说明咱们已经拿到数据了。

码字不易废话两句:有需要学习资料的或者有技术问题交流“点击”即可

二、拿到相关网址

查询当前地点天气的url:https://www.amap.com/service/cityList?version=2020101417
各城市对应code的url:https://www.amap.com/service/weather?adcode=410700备注:这两个url可以从Network中查看到

关网址我们已经拿到了,下面就是具体的代码实现了。至于怎么实现,

我们知道json数据可以使用response.json()转字典,然后操作字典。

三、代码实现

知道了数据的位置后,我们开始来写代码。

1. 查询所有城市名称和编号

先抓取网页,通过添加headers来伪装成浏览器来对数据库地址进行访问,防止被识别后拦截。

url_city = "https://www.amap.com/service/cityList?version=202092419"headers = {"user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
}city = []
response = requests.get(url=url_city, headers=headers)
content = response.json()
print(content)

得到我们想要的数据之后,我们通过查找可以发现cityByLetter里的编号和名称是我们需要的,那么我们就可以盘它了。

if "data" in content:cityByLetter = content["data"]["cityByLetter"]for k,v in cityByLetter.items():city.extend(v)return city

2. 根据编号查询天气

得到了编号和名称,下面肯定就是查询天气呀!

先来看接口

通过上图,可以确定最高温度,最低温度等内容。那么就以此来进行数据爬取。

url_weather = "https://www.amap.com/service/weather?adcode={}"response = requests.get(url=url_weather.format(adcode), headers=headers)
content = response.json()
item["weather_name"] = content["data"]["data"][0]["forecast_data"][0]["weather_name"]
item["min_temp"] = content["data"]["data"][0]["forecast_data"][0]["min_temp"]
item["max_temp"] = content["data"]["data"][0]["forecast_data"][0]["max_temp"]
print(item)

我们的设想已经实现了。

四、完整代码

# encoding: utf-8
'''@author 李华鑫@create 2020-10-06 19:46Mycsdn:https://buwenbuhuo.blog.csdn.net/@contact: 459804692@qq.com@software: Pycharm@file: 高德地图_每个城市的天气.py@Version:1.0'''
import requestsurl_city = "https://www.amap.com/service/cityList?version=202092419"
url_weather = "https://www.amap.com/service/weather?adcode={}"headers = {"user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
}def get_city():"""查询所有城市名称和编号"""city = []response = requests.get(url=url_city, headers=headers)content = response.json()if "data" in content:cityByLetter = content["data"]["cityByLetter"]for k, v in cityByLetter.items():city.extend(v)return citydef get_weather(adcode, name):"""根据编号查询天气"""item = {}item["adcode"] = str(adcode)item["name"] = nameresponse = requests.get(url=url_weather.format(adcode), headers=headers)content = response.json()item["weather_name"] = content["data"]["data"][0]["forecast_data"][0]["weather_name"]item["min_temp"] = content["data"]["data"][0]["forecast_data"][0]["min_temp"]item["max_temp"] = content["data"]["data"][0]["forecast_data"][0]["max_temp"]return itemdef save(item):"""保存"""print(item)with open("./weather.txt","a",encoding="utf-8") as file:file.write(",".join(item.values()))file.write("\n")if __name__ == '__main__':city_list = get_city()for city in city_list:item = get_weather(city["adcode"],city["name"])save(item)

五、保存结果

以上就是小编今天为大家带来的内容,小编本身就是一名python开发工程师,我自己花了三天时间整理了一套python学习教程,从最基础的python脚本到web开发,爬虫,数据分析,数据可视化,机器学习,等,这些资料有想要的小伙伴可" 点击 " 即可领取

大神都已经在用python爬取高德地图了相关推荐

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

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

  2. PYTHON爬取高德地图POI

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

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

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

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

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

  5. python爬高德地图_利用Python爬取高德地图数据

    准备1.高德开放平台注册账户 https://lbs.amap.com/dev/index 验证手机号码.邮箱后进入开发者后台创建一个应用: 并为该应用添加 Key,服务平台选择 web 服务 申请完 ...

  6. python爬取地图地址_网络爬虫-python爬取高德地图地点

    python爬取你想要的数据,近期由于业务需求,用python爬取了高德地图一些地点的数据,爬出来数据大致情况如下: image 下面是基本流程: 2.安装网络爬取第三方库,主要是下面三个(pip i ...

  7. python爬取高德数据_利用Python爬取高德地图数据

    准备1.高德开放平台注册账户 https://lbs.amap.com/dev/index 验证手机号码.邮箱后进入开发者后台创建一个应用: 并为该应用添加 Key,服务平台选择 web 服务 申请完 ...

  8. python输入数据爬取_利用 Python 爬取高德地图数据

    准备1.高德开放平台注册账户 https://lbs.amap.com/dev/index 验证手机号码.邮箱后进入开发者后台创建一个应用: 并为该应用添加 Key,服务平台选择 web 服务 申请完 ...

  9. python零基础爬虫练习:如何用python爬取高德地图

    大家好,我是大志 这次介绍一个爬取动态网页的超简单的一个小demo. 说到动态网页,你对它了解多少呢? 简单来说,要获取静态网页的网页数据只需要给服务器发送该网页url地址就行,而动态网页的数据因为是 ...

最新文章

  1. python分块处理功能_Python-numpy实现灰度图像的分块和合并方式
  2. 长知识啦!字符也可以作为下标!_只愿与一人十指紧扣_新浪博客
  3. SAP RETAIL 事务代码WA08为分配表触发采购订单
  4. 终端连接mysql是出现error 2003_远程连接MySQL报错ERROR 2003解决办法
  5. 你了解VLSM多少(1)
  6. number two
  7. rest api如何创建_创建一个安全的Spring REST API
  8. Python 3 教程一:入门
  9. 微信h5实现分享给朋友url改变_h5微信自定义分享
  10. python查找字符串出现次数_python实现从字符串中找出字符1的位置以及个数的方法...
  11. GPS精密星历文件下载地址
  12. 电脑中缺少dll文件怎么解决?电脑dll文件要怎么打开?
  13. TCP报文( tcp dup ack 、TCP Retransmission)
  14. 你可能不需要担心,AI对你的工作造成威胁:万字长文解读科技革命与人类发展
  15. html表格与CSS控制表格样式
  16. 分布式缓存存储算法与实践思考
  17. 在MFC中怎么样让控件的大小随着主窗体大小改变而改变
  18. Automatic Open-World Reliability Assessment
  19. Matlab 常用图像函数
  20. 教学资源库管理平台-v4.0

热门文章

  1. mysql的更新用法_mysql更新语句的详细用法
  2. PLC模拟量转化原理及其处理
  3. 号称中国最好的网吧(组图)
  4. 网站改版怎样降低百度惩罚及快速恢复排名?
  5. 老站改版后如何让百度快速收录
  6. JAX-WS Customization
  7. 餐饮业做微信小程序的优势
  8. 幼儿园计算机教室管理规则,幼儿园微机室管理制度
  9. ESP Flash downloadtool 工具下载 bin 文件时的报错原因总结
  10. 2020年5月年长沙市公安局通报10起典型电信网络诈骗案例:2小时被骗1919万元!