点击上方Python知识社,设为星标

一、 分析网页结构

以往几篇都是介绍的传统的静态界面的爬取,这次博主介绍一个爬取动态网页的超简单的一个小demo
说到动态网页,你对它了解多少呢?

如果对动态网页不认识的童鞋,博主在此给出链接,可以看百度百科的详细解析动态网页_百度百科以及小马夫的静态页面和动态页面的区别


不要怪博主没有进行讲解,因为博主本人对与动态网页的概念也不是太过了解。等到博主整理好思绪的时候,博主会专门写一篇博文的 -。-

简单来说,要获取静态网页的网页数据只需要给服务器发送该网页url地址就行,而动态网页的数据因为是存储在后端的数据库里。所以要获取动态网页的网页数据,我们需要向服务器发送请求文件的url地址,而不是该网页的url地址。

?,下面开始进入正题。

本篇博文就以高德地图展开:https://www.amap.com/
在打开后,我们发现有一堆div标签,但是并没有我们需要的数据,这个时候就可以判定其为动态网页,这个时候,我们就需要找接口
点击网络标签,我们可以看到网页向服务器发送了很多请求,数据很多,找起来太费时间

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

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

然后我们就可以在XHR类型下开始一个个找,找到了如下的数据
通过查看Headers获得URL
打开之后,我们发现其为近两天的天气情况。

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

?,找到了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()转字典,然后操作字典。

三、代码实现

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

3.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

3.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:46  Mycsdn: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"] = name    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"]    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)

五、保存结果

如果觉得分享对你有帮助,欢迎一键4连

分享、收藏、在看、点赞!

高德地图如何取消订单_一文教你如何爬取高德地图相关推荐

  1. 高德地图如何取消订单_高德地图怎么取消订单

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 高德地图取消订单的方法是: 1.进入到地图页面之后选择点击页面右上角的头像进入到个人中心页面: 2.打开之后往下滑,找到我的: 3 ...

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

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

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

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

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

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

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

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

  6. PYTHON爬取高德地图POI

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

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

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

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

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

  9. 使用python爬取高德POI数据,并转换为WGS84经纬度坐标的点矢量

    一,爬取高德POI数据(高德开放平台接口+ Python) 参考记者博客https://blog.csdn.net/hxx099/article/details/88974264 1,申请高德开放平台 ...

  10. python爬取高德poi数据_Python突破高德API限制完全爬取POI兴趣点数据

    一.背景 爬取POI数据,基本上是个老生常谈的话题了,现在市面上随处可见各路大神制作的获取POI数据的工具,但是当我将从高德地图中实际获取的POI数据与工具爬取的POI数据进行对比之后发现,市面上流行 ...

最新文章

  1. ​“后进生”数学学科上演完美逆袭,成最具竞争力专业之一
  2. java lifo 队列_1.8 Java 队列 Queue、双端队列 Deque - Java 知识总结与学习
  3. Eclipse在高分屏下图标过小的解决方法
  4. PMcaff茶话会 · 杭州 | 玩转社交产品的那些事儿
  5. LinkedList阅读
  6. django 快速实现注册(四)
  7. 被绞杀的网景:互联网门口第一滴血,互联网营销
  8. java小程序开发平台,隔壁都馋哭了
  9. 图片添加对话气泡app_微信公众号、对话框、看一看功能又更新!儿童版微信也要来了?!...
  10. 【java笔记】接口的定义,接口的使用
  11. 【2016-2017 ACM-ICPC (ECNA 2016) F】Removal Game【区间DP】
  12. 【信号分解】基于遗传算法优化变分模态分解VMD实现信号去噪附matlab代码
  13. Mac下Android 反编译
  14. zoom 更改安装位置_如何以Zoom更改会议主持人
  15. 皮尔逊Person相关系数
  16. 新手接触使用Hashcat 破解Office加密文档
  17. kubernetes部署失败的原因
  18. 程序员租房福利! 最新 2018年上海公积金提取 租房提取
  19. (转)(笔记)screen tearing
  20. 【Unity】Unity 基本介绍

热门文章

  1. JAVA调用shell脚本利用ansible修改多节点上的redis参数
  2. 二分搜索 POJ 1064 Cable master
  3. thinkphp对数据库操作有哪些内置函数
  4. 操作系统学习笔记:内存管理
  5. js中中括号,大括号使用详解
  6. 思科6000系列交换机配置维护手册
  7. CCIE试验备考之交换VLAN间路由
  8. 无法发送电子邮件,可能原因:您的主机禁用了mail()函数
  9. 南阳oj-----找球号(一)(set)
  10. cpu性能参数如何看?