欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【demo 定时闹钟 】 python获取网络时间

程序员文章站 2022-07-12 11:18:36
...

【demo 定时闹钟 】 python获取网络时间

1.背景

采用爬虫,爬取www.beijing-time.org网站的北京时间。

北京时间又称中国标准时间。对应的网站:www.beijing-time.org

python:
3.7.9 (default, Aug 31 2020, 17:10:11) [MSC v.1916 64 bit (AMD64)]

参考:
https://blog.csdn.net/qq464685223/article/details/104515897

备注:爬取的节点可能因为网站的维护升级不可用,
目前2020.10.8测试可用。

2.检查元素,获取请求头和url以及数据

使用windows10集成的 Microsoft Edge浏览器打开
http://www.beijing-time.org/
点击右侧的网络
【demo 定时闹钟 】 python获取网络时间
点击刷新:查看时间数据封包
请求头:【demo 定时闹钟 】 python获取网络时间
数据:
【demo 定时闹钟 】 python获取网络时间

3.code

# -*- coding: utf-8 -*-
#2020.10.8测试有效
import time
import requests
import sys
print(sys.version)

#获取http://www.beijing-time.org/
#北京时间
def getBeijinTime():
    try:
        '''
        headers是解决requests请求反爬的方法之一,
        相当于我们进去这个网页的服务器本身,假装自己本身在爬取数据。
        '''
        #设置请求头信息
        headers = {'User-Agent': 'Mozilla/5.0'}

        # 设置请求地址:
        url = r'http://time1909.beijing-time.org/time.asp'

        #用python内置的requests包
        r = requests.get(url=url,headers=headers)#

        # 检查返回的通讯代码,200是正确返回;
        if r.status_code == 200:
            # 定义result变量存放返回的信息源码;
            result = r.text
            # 通过;分割文本;
            data = result.split(";")

            # 以下是数据文本处理:切割、取长度,最最基础的东西就不描述了;
            year = data[1][len("nyear") + 3:]   #年
            month = data[2][len("nmonth") + 3:] #月
            day = data[3][len("nday") + 3:]     #日
            wday = data[4][len("nwday")+1:]     #星期
            hrs = data[5][len("nhrs") + 3: ]    #小时
            minute = data[6][len("nmin") + 3:]  #分钟
            sec = data[7][len("nsec") + 3:]     #秒

            # 这个也简单把切割好的变量拼到beijinTimeStr变量里;
            timeStr = "%s-%s-%s %s:%s:%s" % (year, month, day, hrs, minute, sec)

            # 将timeStr转为时间戳格式;
            #用到函数 time.strptime(),time.mktime()
            timeArray = time.strptime(timeStr, '%Y-%m-%d %H:%M:%S')  # 按照对应的格式转换为时间数组time.strptime()
            timeStamp = int(time.mktime(timeArray))                  # 转换成整形时间戳 time.mktime()

            # 返回时间戳;
            return timeStamp,timeStr
    except:

        return (-1)

if __name__=="__main__":
    print(getBeijinTime())

运行结果:
【demo 定时闹钟 】 python获取网络时间

相关标签: demo 定时闹钟