博文

目前显示的是 八月, 2020的博文

抓取动态网页数据和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" 项目。 现在左边出现很多 ...

Flutter/Dart Shared Preferences和设置菜单实例

图片
在 Android Studio/Java 里,Shared Preferences 很容易使用。而在 Flutter/Dart 里,Shared_Preferences就比较让人捉摸不透。 我刚开始学 Shared Preferences 时,我搜索了很多资料。大部分都是讲要创建一个另外的 Class file,或者建立很多很多的 setter/getter 函数。我在想我能不能用另外一种更简单的方法呢。 下面就介绍一下我是怎么做的。 首先向文件 pubspec.yaml 添加 dependency: dependencies: flutter: sdk: flutter # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^0.1.3 // TODO: 这里添加 shared_preferences: ^0.5.10 然后点 "Pub Get" : 然后 import package: import 'package:flutter/material.dart'; //TODO: 添加 package import 'package:shared_preferences/shared_preferences.dart';   Flutter/Dart 使用 SharedPreferences 3步骤 1. 初始化 使用 SharedPreferences 的关键就是在 async main() 里创建一个实例,然后在 main() 之前定义一个最高级别变量。之后我们就可以随时随地使用它了。 SharedPreferences mSharedPreferences; void main() async { WidgetsFlutterBinding.ensureInitialized(); //这一行必须有 mSharedPreferences = await SharedPreferences.getInstan...