爬虫入门经典(五) | 简单一文教你如何爬取高德地图

不温卜火 等级 816 0 0

  大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行更新,博客主页:https://buwenbuhuo.blog.csdn.net/爬虫入门经典(五) | 简单一文教你如何爬取高德地图

PS:由于现在越来越多的人未经本人同意直接爬取博主本人文章,博主在此特别声明:未经本人允许,禁止转载!!!

目录


爬虫入门经典(五) | 简单一文教你如何爬取高德地图


推荐

爬虫入门经典(五) | 简单一文教你如何爬取高德地图
  ♥各位如果想要交流的话,可以加下QQ交流群:974178910,里面有各种你想要的学习资料。♥

  ♥欢迎大家关注公众号【不温卜火】,关注公众号即可以提前阅读又可以获取各种干货哦,同时公众号每满1024及1024倍数则会抽奖赠送机械键盘一份+IT书籍1份哟~♥
爬虫入门经典(五) | 简单一文教你如何爬取高德地图

一、 分析网页结构

以往几篇都是介绍的传统的静态界面的爬取,这次博主介绍一个爬取动态网页的超简单的一个小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 requests


url_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 city

def 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 item

def 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) 

五、保存结果

爬虫入门经典(五) | 简单一文教你如何爬取高德地图
爬虫入门经典(五) | 简单一文教你如何爬取高德地图

美好的日子总是短暂的,虽然还想继续与大家畅谈,但是本篇博文到此已经结束了,如果还嫌不够过瘾,不用担心,我们下篇见!


爬虫入门经典(五) | 简单一文教你如何爬取高德地图

  好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。
  如果我的博客对你有帮助、如果你喜欢我的博客内容,请“点赞” “评论”“收藏”一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
  码字不易,大家的支持就是我坚持下去的动力。点赞后不要忘了关注我哦!

爬虫入门经典(五) | 简单一文教你如何爬取高德地图
爬虫入门经典(五) | 简单一文教你如何爬取高德地图

本文转自 https://buwenbuhuo.blog.csdn.net/article/details/109217510,如有侵权,请联系删除。

收藏
评论区

相关推荐

爬虫入门经典(五) | 简单一文教你如何爬取高德地图
大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行
被“词云”包围的冰冰会更好看吗?安排
(https://imghelloworld.osscnbeijing.aliyuncs.com/b299933deefc692934e8cc6141ab3894.png) 大家好,我是小五🐶 昨天「凹凸数据」发了一篇张同学投稿的文章《用Python爬取王冰冰vlog弹幕并制作词云(https://mp.weixin.qq.com/
厉害了,股票K线图还能这么画!
大家好,我是小五🐶发现大家还是最喜欢股票基金话题呀~那说到股票基金就不得不提——**K线图**!那小五今天就带大家👉用`python`来轻松绘制高颜值的K线图🚀 获取股票交易数据 巧妇难为无米之炊,做可视化也离不开数据。本文我将以酱香型科技——**贵州茅台**为例,获取它的近期股票数据并绘制K线图。如果我们要特意去动手去写爬虫,就显得有些多余了,这里
太酷炫了!我用Python画出了北上广深的地铁路线动态图
大家好,我是小五🐶 今天教大家用python制作地铁线路动态图,这可能是全网最全最详细的教程了。坐标点的采集小五之前做过类似的地理可视化,不过都是使用网络上收集到的json数据。但很多数据其实是过时的,甚至是错误/不全的。所以我们最好还是要自己动手,丰衣足食(爬虫大法好)。打开高德地图的地铁网页,http://map.amap.com/subway/ind
爬取千万条基金数据是怎样的体验?
大家好,我是朱小五 昨天的文章中就提了一嘴,最近爬了一些股票和基金数据。再加上我们之前也做过,那就简单跟大家说一下如何爬取tiantian基金的数据。基金代码爬取基金的数据有个必要条件就是要知道基金代码,如何获取呢,打开官网找吧。点了一圈,发现了基金代码的主页,寻思翻页爬取就完事了http://fund.eastmoney.com/allfund.html
用python爬取4332条粽子数据进行分析,再送15盒粽子给大家
↑ 点击上方 “凹凸数据” 关注 + 星标  文章干货!有福利 !  端午节快要到了,甜咸粽子之争也快要拉开帷幕。 小五准备用Python爬取淘宝上的粽子数据并进行分析,看看有什么发现。(顺便送大家一波福利)爬虫爬取淘宝数据,本次采用的方法是:Selenium控制Chrome浏览器自动化操作\[1\]。其实我们还可以利用Ajax接口来构造链接,但是非常
爬取五大平台621款手机,告诉你双十一在哪买最便宜!
↑关注+置顶 有趣的不像个技术号 今晚0点,相约剁手大家好,我是朱小五 明天就是双十一了,看了看自己手里的卡的像IE浏览器的手机,感觉可能等不到5G普及了。 我!要!换!手!机! 去哪买呢? 作为一个机(pin)智(qiong)boy,肯定要比价啊,哪家便宜去哪家 我用Python爬取了某比价网站的手机数据,获取了其中五大平台(天猫,京东,
怎么学python,学习python的正确姿势
Python是一门相对来说比较简单的编程语言,自学是非常轻松的。首先得明白python有哪些发展方向 需要了解这个这门语言 而不是听说 这个高薪资 容易学习最好的学习状态就是出于兴趣 兴趣是最好的老师 当然对钱感兴趣也是可以的。一、人工智能二、大数据三、网络爬虫工程师四、Python web全栈工程师五、Python自动化运维六、Python自动化测试再来说
Python3《机器学习实战》学习笔记(八):支持向量机原理篇之手撕线性SVM
转载请注明作者和出处: https://zhuanlan.zhihu.com/ml-jack 机器学习知乎专栏:https://zhuanlan.zhihu.com/ml-jack CSDN博客专栏:http://blog.csdn.net/column/details/16415.html Github代码获取:https://github.c
Python基础练习(一)中国大学定向排名爬取
说好的要从练习中学习爬虫的基础操作,所以就先从容易爬取的静态网页开始吧! 今天要爬取的是最好大学网上的2018年中国大学排名。我个人认为这个是刚接触爬虫时用来练习的一个很不错的网页了。 在说这个练习之前,给新着手学习爬虫的同学提供一个中国MOOC上北京理工大学嵩天老师的视频, [Python网络爬虫与信息提取](https://www.oschina.n
Python爬取暴走漫画动态图
最近再之乎上看到比较好的Python爬虫教程,看过之后对爬虫有了大概的了解,随后自己写了个爬取[暴走漫画](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fbaozoumanhua.com%2Fcatalogs%2Fgif)动图的爬虫练练手,另外附上[Python爬虫教程](https://w
Python爬取网易云歌单
#### 基本配置: * Python版本:3.7 #### 相关模块: from urllib import parsefrom lxml import etreefrom urllib3 import disable_warningsimport requests #### 案例关键点: 使用单线程爬取,未登录,爬取网易云
Python爬取网易云音乐辑的图片、专辑名和专辑出版时间
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。 作者:阿里波特 来源:CSDN **Python爬虫、数据分析、网站开发等案例教程视频免费在线观看** https://space.bilibili.com/523606542 ![](https://oscimg.oschina.net/
Python爬虫
Python爬虫-xpath ============== * Python爬虫-xpath * 说明 * 再说明 * 插件推荐 * 语法讲述 * 举栗子 * 代码里使用 * 实战句子迷 * 需要的总结: 说明 -- 关于Python爬虫请求数据方面的知
vue 中使用高德地图, 地图选点
####功能简述: 网页版高德地图开发,主要支持地图选点(没做导航),搜索选点.(功能类似微信与好友聊天中的选择位置,发送位置,如下图) ![](https://img2018.cnblogs.com/blog/1195136/201904/1195136-20190423112130558-812176871.png) ###第一步:先成为高德地图的开发