Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import httpclient, htmlparser, streams, xmlTree, strutils, csvtools, times
- import simple_parseopt
- const
- URL = "http://127.0.0.1:8000/silk/profiling/?show=250&order_by=Recent"
- INNER_URL = "http://127.0.0.1:8000/silk/profile/{profile_id}"
- type
- Row = object
- overall: int
- queries: int
- numQueries: int
- proc get(filename: string): Response =
- var browser = newHttpClient()
- var response = browser.request(URL)
- return response
- let options = get_options:
- fromDT: string
- when isMainModule:
- let
- response = get("test.csv")
- body: StringStream = newStringStream(response.body)
- parsedBody = parseHtml(body)
- var
- rows = newSeq[Row]()
- row = Row()
- rowTs: Time
- for cell in parsedBody.findAll("div"):
- let outerClass = cell.attr "class"
- if outerClass == "timestamp-div":
- let ts = cell.innerText.strip(trailing=true, chars={'m', 's'})
- rowTs = ts.parseTime("HH:mm:ss\'.\'fff", utc())
- if outerClass == "time-taken-div":
- let timeTaken = cell.child("span")
- row.overall = parseInt(timeTaken.innerText.strip(trailing=true, chars={'m', 's'}))
- if outerClass == "time-taken-queries-div":
- let queries = cell.child("span")
- row.queries = parseInt(queries.innerText.strip(trailing=true, chars={'m', 's'}))
- if outerClass == "num-queries-div":
- let numQueries = cell.child("span")
- row.numQueries = parseInt(numQueries.innerText.strip(trailing=true, chars={'m', 's'}))
- if options.fromDT.len > 0:
- let filterDT = options.fromDT.parseTime("HH:mm:ss\'.\'fff", local())
- if rowTs > filterDT:
- rows.add(row)
- row = Row()
- writeToCsv[Row](rows, "/home/ryan/profile_stats/results.csv")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement