如何抓取网页数据(一个爬取动态网页的超简单的一个小demo了解多少 )

优采云 发布时间: 2021-12-30 00:25

  如何抓取网页数据(一个爬取动态网页的超简单的一个小demo了解多少

)

  大家好,我是大智

  这一次,我将介绍一个超级简单的抓取动态网页的演示。

  说起动态网页,你了解多少?

  简单的说,要获取静态网页的网页数据,只需要将网页的url地址发送到服务器,而动态网页的数据存储在后端数据库中。所以要获取动态网页的网页数据,我们需要向服务器发送请求文件的URL地址,而不是网页的URL地址。

  好的,让我们进入下面的主题。

  一、 分析网页结构

  这篇博文将用高德地图进行扩展:

  

  打开后发现里面有一堆div标签,但是没有我们需要的数据。这时候我们就可以确定它是一个动态网页。这时候我们需要找到一个接口

  

  点击网络选项卡,可以看到网页向服务器发送了大量请求,数据量很大,查找时间过长

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

  XHR 类型是通过 XMLHttpRequest 方法发送的请求。它可以在后台与服务器交换数据,这意味着可以在不加载整个网页的情况下更新网页某一部分的内容。换句话说,从数据库请求然后接收的数据是XHR类型的

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

  

  通过查看Headers获取URL

  

  打开一看,发现是这两天的天气。

  

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

  ok,找到json数据,对比一下,看看是不是我们要找的

  

  通过对比,数据完全对应,这意味着我们得到了数据。

  二、获取相关网址

  '''

  

  ok,我们拿到了相关的网址,下面是具体的代码实现。至于如何实现,

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

  

  三、代码实现

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

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

  先抓取网页,冒充浏览器,通过添加header访问数据库地址,防止被识别后被拦截。

  url_city = "https://www.amap.com/service/cityList?version=202092419"

  

  得到我们想要的数据后,通过搜索可以发现cityByLetter中的number和name就是我们需要的,然后就可以记录下来了。

  

   if "data" in content:

  

  3.2 根据序号查询天气

  拿到号码和名字后,下面绝对是查天气啦!

  先看界面

  

  通过上图可以确定最高温度、最低温度等。然后使用它来抓取数据。

  url_weather = "https://www.amap.com/service/weather?adcode={}"

  

  好了,我们的愿景已经实现了。

  

  四、完整代码

  # encoding: utf-8

  五、保存结果

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线