我正在尝试重写已经执行过的脚本,但是我意外删除了它。我想使用time.gov作为当前时间的参考,然后使用BeautifulSoup使用从time.gov中提取的时间来设置计算机的系统时间。我无法弄清楚如何在我的代码中将更改的时间与time.gov隔离。
我已经尝试使用bs4通过使用Chrome的inspect函数获取具有变化时间的div和class。
这是我到目前为止所拥有的。
from bs4 import BeautifulSoup
import requests
url = "https://www.time.gov/"
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text,'lxml')
time = soup.find(attrs={'class':'lzswftext'})
print (time.string)
预期结果只是纯文本中的时间。之后,我将使用python将时间转换为军事/ 24小时制时间,然后将其放入time命令中以设置系统时间。我将使用任务计划程序来模仿计划中的NTP时间设置。之所以这样做,是因为我不断得到的机器在设置为auto时无法弄清NTP网络时间,因此我会每隔一段时间就向其发出Web请求。
答案 0 :(得分:1)
您无法获得,因为它是由javascript呈现的,但是您可以从其他网址获取时间
from bs4 import BeautifulSoup
import requests
import datetime
url = "https://nist.time.gov/widget/actualtime.cgi"
response = requests.get(url)
soup = BeautifulSoup(response.text,'html.parser')
timestamp = soup.find('timestamp').get('time')
# in microseconds
print(timestamp)
# convert to human readable
# need to divide by million or error "year is out of range"
timestamp = int(timestamp) / 1e6
print(datetime.datetime.utcfromtimestamp(timestamp).replace(tzinfo=datetime.timezone.utc))
# or
print(datetime.datetime.utcfromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S'))
# est time
import pytz
tz = pytz.timezone('America/New_York')
dt = datetime.datetime.fromtimestamp(timestamp, tz)
print(dt.strftime('%Y-%m-%d %H:%M:%S %Z%z'))