Tasker获取网页数据

Cecilia-pj 于 2022-08-28 发布

起因

 我想要让手机每天都去一个网页并获取其中的一小段数据,虽然对于Python来说很简单。但是用Python不好进行通知,因为我想直接使用Android的系统通知,而不是使用第三方邮箱、WeChat进行通知,因为它们都可能存在漏接或迟接。所以Tasker应该是一个好的选择。

使用HTTP Request来获取数据

 由于Tasker已经把HTTP Get、HTTP Head和HTTP Post弃用。所以我们使用HTTP Request来代替它们进行网页数据的操作。

  1. 安卓手机安装 Tasker
  2. 添加配置文件。点击 + 添加配置文件(取名“获取网页数据”)
  3. 获取数据。点击 + 添加操作 → 网络 → HTTP Request

    方法:一般都是Get
    URL:要获取数据的网址
    头部:一般是浏览器代理和Content-Type,直接点放大镜选一下就行了。
    将输出保存:先用MT管理器新建一个.html文件,再点放大镜选它就行了。

如图。我们已经将网页数据都保存到1.html了。 pic1

  1. 读取文件。点击 + 添加操作 → 文件 → 读取文件

    文件:刚才保存的.html文件
    变量:新建一个名称简单的局部变量

如图。将1.html所有的数据读取并存入到%html。 pic2

  1. 截取数据。 官网文档有关于html数据的读取方式。但是是英文的。翻译一下它。 pic3
    从 5.12 版开始,Tasker 可以直接读取这些值。您可以使用点或方括号表示法,如下所示(考虑上面的文本有一个名为 %html 的变量)。
    • %html.div 或 %html[div] 将返回第一个 div 的内容
    • %html.div() 或 %html[div]() 将返回一个逗号分隔的 div 内容列表
    • %html[img=:=src] 将返回第一个 img 的 src 属性 image.jpg。您可以使用 =:= 表示法来检索任何元素的属性,如图所示。

笔记:

 从以上信息中,我们知道了html数据的提取。
 但是光看是没有用的,来实践一下。打开baidu。 pic4 打个比方,我要获取“更多”这个文本。
鼠标右键打开浏览器的检查功能。可以看到“更多”处于div class="mnav s-top-more-btn"之下。 pic5 所以使用%html[div{class=mnav s-top-more-btn}]来表示其下携带的数据。
 想要更加精确的读取“更多”需要进行嵌套读取,div class="mnav s-top-more-btn"下一个标签是a。所以使用%html[div{class=mnav s-top-more-btn}>a]来表示a所携带的数据。也就是“更多”。
 假如我想提取“更多”的网址。应使用%html[div{class=mnav s-top-more-btn}>a=:=href]来表示。
 假如我想提取“地图”文本。这时应使用%html[div{id=s-top-left}>a:nth-child«3»]来表示。

总结

 要提取数据先要打开浏览器,鼠标右键打开浏览器的检查功能。查看各个标签的相对位置。

参考链接

Tasker官网文档:Variables
Tasker官网文档:HTTP Request