zoukankan      html  css  js  c++  java
  • 二十三、使用Lynx获取天气数据脚本

    Lynx是一款1992年编写的基于文本的浏览器

    这个脚本看着很好玩,学习一下

    安装lynx

    [root@tzPC 25Unit]# yum list | grep lynx
    lynx.x86_64                                 2.8.8-0.3.dev15.el7        base
    [root@tzPC 25Unit]# yum install -y lynx

    配置文件lynx.cfg

    lynx默认配置文件存放路径为:/usr/local/lib/lynx.cfg

    Centos以及大部分发行版路径为:/etc/lynx.cfg

    Ubuntu路径为:/etc/lynx-curl/lynx.cfg

    配置文件中条目格式为

    PARAMETER:value
    #参数

    相当于键值对

    其中要注意的是noproxy参数,用于访问某些网站不使用代理,他的值是可以用逗号分隔的。

    获取数据

    使用-dump选项,直接将访问到的网页使用文本格式输出

    [root@tzPC 25Unit]# lynx -dump https://www.tianqi.com/chengdu/

    这里有两种方式得到数据

    第一种

    将lynx -dump的输出导入到文本文件,找出目标数据在多少行,再使用sed截取

    [root@tzPC 25Unit]# lynx -dump https://www.tianqi.com/chengdu/ > tianqi.txt

    在vim中使用set nu命令查看需要的数据在多少行

      31 成都
      32 
      33           [54][切换城市]
      34           2020年09月09日 星期三 庚子年七月廿二
      35           [b2.png]
      36 
      37           2238 
      39           阴21 ~ 26

    找到天气那一行,去掉行首空格制表符

    [root@tzPC 25Unit]#  sed -n '39s/^[ 	]*//p' tianqi.txt 
    多云22 ~ 29

     合起来如下

    [root@tzPC 25Unit]# lynx -dump https://www.tianqi.com/chengdu/ |sed -n '39s/^[ 	]*//p'
    多云22 ~ 29

     第二种,也就是书里的方式

    查找指定字符串,截取数据

    [root@tzPC 25Unit]# sed -n '/54][/{n;p}' tianqi.txt 
              2020年09月09日 星期三 庚子年七月廿二

    脚本整体如下

    截取温度

    [root@tzPC 25Unit]# cat sedtemp
    /54][/{
    n
    n
    n
    n
    p
    }

    截取时间

    [root@tzPC 25Unit]# cat sedtime
    /54][/{
    n
    p
    }

    去除空格

    [root@tzPC 25Unit]# cat sedspace
    s/^[ 	]*//p

    脚本主体

    [root@tzPC 25Unit]# cat weather.sh 
    #!/bin/bash
    #extract提取 the current weather for ChengDu
    URL="https://www.tianqi.com/chengdu/"
    LYNX=$(which lynx)
    $LYNX -dump $URL > tmp_tianqi
    curr_time=$(cat tmp_tianqi | sed -n -f sedtime|sed -n -f sedpace)
    temp=$(cat tmp_tianqi |sed -n -f sedtemp | sed -n -f sedpace)
    rm -f tmp_tianqi
    echo "今天是 $curr_time"
    echo "室外温度为 $temp"

    效果

    [root@tzPC 25Unit]# bash weather.sh 
    今天是 2020年09月09日 星期三 庚子年七月廿二
    室外温度为 23

    也可以放入$HOME/.bashrc里

    tianqi=`lynx -dump https://www.tianqi.com/chengdu/ |sed -n '39s/^[ 	]*//p'`
    echo "今天是`date +"%Y年%m月%d日"`,$tianqi"

    重新登录服务器

    Connecting to 10.122.0.110:22...
    Connection established.
    To escape to local shell, press 'Ctrl+Alt+]'.
    
    Last login: Wed Sep  9 17:08:13 2020 from 10.122.0.110
    今天是2020年09月09日,多云21 ~ 25℃
    [root@tzPC ~]# 
    

    哈哈,一个好玩的脚本

    关于lynx跟curl的区别

    有时候curl访问会显示403拒绝访问,lynx不会

    lynx还会有标号

    学习来自:《Linux命令行与Shell脚本大全 第3版》第25章

    今天的学习是为了以后的工作更加的轻松!
  • 相关阅读:
    8.使用背景图,制作雪碧图效果
    7.使用定位制作轮播图样式
    6.使用定位,制作弹出框界面
    App 抓包代理设置
    Cypress 自动化环境搭建
    Android APP 性能测试之 GT 工具
    接口测试流程
    接口结构内容
    接口定义
    网络七层协议
  • 原文地址:https://www.cnblogs.com/tz90/p/13634570.html
Copyright © 2011-2022 走看看