python抓取动态网页(一个爬取动态网页的超简单的一个小demo了解多少)
优采云 发布时间: 2022-03-07 17:19python抓取动态网页(一个爬取动态网页的超简单的一个小demo了解多少)
大家好,我是大智
这次给大家介绍一个超级简单的爬取动态网页的小demo。
说起动态网页,你对它了解多少?
简单来说,要获取静态网页的网页数据,只需要将网页的url地址发送到服务器,动态网页的数据存储在后端数据库中。所以要获取动态网页的网页数据,我们需要将请求文件的url地址发送给服务器,而不是网页的url地址。
好的,让我们开始进入正题。
一、 分析网页结构
本篇博文以高德地图开头:
打开后发现里面有一堆div标签,但是没有我们需要的数据。这时候,我们就可以判断为动态网页了。这时候,我们需要找到一个接口
点击网络选项卡,我们可以看到网页向服务器发送了很多请求,数据很多,查找时间太长了
我们点击XHR分类,可以减少很多不必要的文件,节省很多时间。
XHR 类型是通过 XMLHttpRequest 方法发送的请求,可以在后台与服务器交换数据,也就是说可以在不加载整个网页的情况下更新网页某一部分的内容。即从数据库请求然后响应的数据是XHR类型的
然后我们就可以开始在XHR类型下一一搜索,找到如下数据
通过查看标头获取 URL
打开后发现是这两天的天气情况。
打开后我们可以看到上面的情况,这是一个json格式的文件。然后,它的数据信息以字典的形式存储,数据存储在“data”这个键值中。
ok,找到了json数据,我们对比一下看看是不是我们要找的
通过比较,数据完全对应,这意味着我们已经获得了数据。
二、获取相关网址
'''
ok,我们已经拿到了相关的URL,下面是具体的代码实现。至于怎么做,
我们知道json数据可以使用response.json()转换成字典,然后对字典进行操作。
三、代码实现
知道数据的位置后,我们开始编写代码。
3.1 查询所有城市名称和数字
先爬取网页,伪装成浏览器,添加header访问数据库地址,防止被识别和拦截。
得到我们想要的数据后,我们可以通过搜索发现cityByLetter中的数字和名称是我们需要的,然后我们就可以磁盘了。
if "data" in content:
3.2 根据号码查询天气
得到号码和名字,下面一定要查天气!
先看界面
通过上图可以确定最高温度、最低温度等。然后使用它进行数据爬取。
url_weather = "https://www.amap.com/service/weather?adcode={}"
好的,我们的愿景已经实现。
四、完整代码
# encoding: utf-8
五、保存结果