summaryrefslogtreecommitdiff
path: root/examples/getNTPservers.py
diff options
context:
space:
mode:
authorPaul McGuire <ptmcg@users.noreply.github.com>2018-01-06 23:38:53 -0600
committerGitHub <noreply@github.com>2018-01-06 23:38:53 -0600
commit430c5ad767cc946e9da7cd5f4673a4e3bd135a3c (patch)
tree5a7df11e0fd52ab320b0ef3e670e260f315ca9ae /examples/getNTPservers.py
parentf1d12567a8da4d254e6d62bb0d650c87c7d0bb89 (diff)
parentd953150a6db3ac247a64b047edc2df7156f3e56b (diff)
downloadpyparsing-git-430c5ad767cc946e9da7cd5f4673a4e3bd135a3c.tar.gz
Merge pull request #1 from cngkaygusuz/master
Add Scrutinizer-CI configuration and other niceties
Diffstat (limited to 'examples/getNTPservers.py')
-rw-r--r--examples/getNTPservers.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/examples/getNTPservers.py b/examples/getNTPservers.py
new file mode 100644
index 0000000..bbf1d60
--- /dev/null
+++ b/examples/getNTPservers.py
@@ -0,0 +1,30 @@
+# getNTPservers.py
+#
+# Demonstration of the parsing module, implementing a HTML page scanner,
+# to extract a list of NTP time servers from the NIST web site.
+#
+# Copyright 2004, by Paul McGuire
+#
+from pyparsing import Word, Combine, Suppress, CharsNotIn, nums
+import urllib.request, urllib.parse, urllib.error
+
+integer = Word(nums)
+ipAddress = Combine( integer + "." + integer + "." + integer + "." + integer )
+tdStart = Suppress("<td>")
+tdEnd = Suppress("</td>")
+timeServerPattern = tdStart + ipAddress.setResultsName("ipAddr") + tdEnd + \
+ tdStart + CharsNotIn("<").setResultsName("loc") + tdEnd
+
+# get list of time servers
+nistTimeServerURL = "http://www.boulder.nist.gov/timefreq/service/time-servers.html"
+serverListPage = urllib.request.urlopen( nistTimeServerURL )
+serverListHTML = serverListPage.read()
+serverListPage.close()
+
+addrs = {}
+for srvr,startloc,endloc in timeServerPattern.scanString( serverListHTML ):
+ print(srvr.ipAddr, "-", srvr.loc)
+ addrs[srvr.ipAddr] = srvr.loc
+ # or do this:
+ #~ addr,loc = srvr
+ #~ print addr, "-", loc