抓取动态网页数据和JSON解码教程
这个教程主要用 Flutter / Dart 语言来演示如何抓取动态网页数据并JSON解码为Map 或 List。当然它的原理同样适用于 Java 和 Python。 一谈到抓取网页数据,我们就想到 Beautiful Soup 。但事实是现在大多数的网页都是动态的,而Beautiful Soup 只适用于静态网页。 今天我就解释一下如何抓取动态网页的数据,举例的网站是 TheWeatherNetwork.com ,它是最好的气象网站之一。 1. 确定网页是动态还是静态 看一下 The Weather Network 网站的截屏,显示的是加拿大 Vancouver, BC 的当前天气。 这个教程将抓取图中3个红圈中的数据,分别是当前天气描述,当前温度和当前体感(feels like)温度。 Beautiful Soup 只能分析网页源代码的数据内容。我们来看一下网页源代码中有没有当前天气描述 "A few clouds" (少云)。 这里用的浏览器是谷歌 Chrome,Firefox 也是有类似的功能的。 鼠标右击网页空白处并点选 "View page source" (查看网页源代码)。 一个新页面会打开。用 Ctrl+F 快速搜索一下 "A few clouds",返回 0/0 个结果。 这就是说 TheWeatherNetwork 是一个动态网站。"A few clouds" 没有写在源代码中,那它一定是从另外一个地方获取的。我们就是要找出那“另外一个地方”。 现在再回到 TheWeatherNetwork.com 并右击空白处,选 "Inspect"(检查)。 如果在菜单栏没有 "Network" (网络),点 ">>" 再选择 "Network"。 现在这个 "Network" 页面应该是空白的,因为页面已经加载完了,当前没有网络活动。如果你还是看到一些栏目,点 "Clear" (清除)键清除它们。然后按 Ctrl+R 刷新页面,点 XHR 过滤这些栏目,使得仅剩 " XMLHttpRequest" 项目。 现在左边出现很多 ...