前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python零基础爬虫练习:如何用python爬取高德地图

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

原创
作者头像
python大志
发布2021-12-26 15:09:21
8800
发布2021-12-26 15:09:21
举报
文章被收录于专栏:玩转python玩转python

大家好,我是大志

这次介绍一个爬取动态网页的超简单的一个小demo

说到动态网页,你对它了解多少呢?

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

ok,下面开始进入正题。

一、 分析网页结构

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

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

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

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

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

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

通过查看Headers获得URL

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

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

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

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

二、拿到相关网址

代码语言:txt
复制
'''

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

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

三、代码实现

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

3.1 查询所有城市名称和编号

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

代码语言:txt
复制
url_city = "https://www.amap.com/service/cityList?version=202092419"

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

代码语言:txt
复制
    if "data" in content:

3.2 根据编号查询天气

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

先来看接口

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

代码语言:txt
复制
url_weather = "https://www.amap.com/service/weather?adcode={}"

ok,我们的设想已经实现了。

四、完整代码

代码语言:txt
复制
# encoding: utf-8

五、保存结果

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、 分析网页结构
  • 二、拿到相关网址
    • 三、代码实现
      • 3.1 查询所有城市名称和编号
      • 3.2 根据编号查询天气
    • 四、完整代码
      • 五、保存结果
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档