python零基础爬虫练习:如何用python爬取高德地图
大家好,我是大志
这次介绍一个爬取动态网页的超简单的一个小demo
。
说到动态网页,你对它了解多少呢?
简单来说,要获取静态网页的网页数据只需要给服务器发送该网页url
地址就行,而动态网页的数据因为是存储在后端的数据库里。所以要获取动态网页的网页数据,我们需要向服务器发送请求文件的url
地址,而不是该网页的url
地址。
ok,下面开始进入正题。
一、 分析网页结构
本篇博文就以高德地图展开:https://www.amap.com/
在打开后,我们发现有一堆div标签
,但是并没有我们需要的数据,这个时候就可以判定其为动态网页,这个时候,我们就需要找接口
点击网络标签,我们可以看到网页向服务器发送了很多请求,数据很多,找起来太费时间
我们点击XHR
分类,可以减少很多不必要的文件,省下很多时间。
XHR类型即通过XMLHttpRequest方法发送的请求,它可以在后台与服务器交换数据,这意味着可以在不加载整个网页的情况下,对网页某部分的内容进行更新。也就是说,向数据库请求然后得到响应的数据是XHR类型的
然后我们就可以在XHR
类型下开始一个个找,找到了如下的数据
通过查看Headers
获得URL
打开之后,我们发现其为近两天的天气情况。
打开后我们可以看到上面的情况,这是个json
格式的文件。然后,它的数据信息是以字典的形式来保存的,而数据是都保存在“data”
这个键值里面。
ok,找到了json
数据,我们来对比下看是否是我们找的东西
通过对比,数据正好对应,那就说明咱们已经拿到数据了。
二、拿到相关网址
'''
ok,相关网址我们已经拿到了,下面就是具体的代码实现了。至于怎么实现,
我们知道json数据可以使用response.json()
转字典,然后操作字典。
三、代码实现
知道了数据的位置后,我们开始来写代码。
3.1 查询所有城市名称和编号
先抓取网页,通过添加headers
来伪装成浏览器来对数据库地址进行访问,防止被识别后拦截。
url_city = "https://www.amap.com/service/cityList?version=202092419"
得到我们想要的数据之后,我们通过查找可以发现cityByLetter
里的编号和名称是我们需要的,那么我们就可以盘它了。
if "data" in content:
3.2 根据编号查询天气
得到了编号和名称,下面肯定就是查询天气呀!
先来看接口
通过上图,可以确定最高温度,最低温度等内容。那么就以此来进行数据爬取。
url_weather = "https://www.amap.com/service/weather?adcode={}"
ok,我们的设想已经实现了。
四、完整代码
# encoding: utf-8
五、保存结果
相关文章
- Python使用tkinter组件Label显示简单数学公式
- 内网渗透之DCOM横向移动
- 以目标为导向的语义交流的共同语言——一个课程学习框架
- python爬虫前奏【成信笔记】
- HTML 5 File API:文件拖放上传功能
- 教你快速创建 Python 虚拟环境
- pyenv 实现Python多版本自由切换
- 用 Python 对 Excel文件进行批量操作
- Python - 接入钉钉机器人
- Python - 抓取 iphone13 pro 线下店供货信息并发送到钉钉机器人,最后设置为定时任务
- crontab - 解决 mac 下通过 crontab 设置了 Python 脚本的定时任务却无法运行
- [源码解析] PyTorch分布式(5) ------ DistributedDataParallel 总述&如何使用
- Python科普系列——类与方法(上篇)
- SAP对STO的交货单执行PGI,报错 -Fld selectn for mvmt type 643 acct 400020 differs
- Spring Boot 实现通用 Auth 认证的 4 种方式
- 盘点4种使用Python批量合并同一文件夹内所有子文件夹下的Excel文件内所有Sheet数据
- OushuDB 学习经验分享(三):技术特点
- Java和Python思维方式的不同之处
- Python中日志记录新技能
- 奥比中光Gemini OpenCV—Python使用