def print_timetable(browser): driver = browser.driver h3s = driver.execute_script('return $(arguments[0])', 'h3') tables = [] for table in driver.execute_script('return $(arguments[0])', 'table'): rows = [] row = [] for th in driver.execute_script( 'return $(arguments[0]).find(arguments[1])', table, 'thead th'): row.append(th.text) rows.append(row) for tr in driver.execute_script( 'return $(arguments[0]).find(arguments[1])', table, 'tbody tr'): row = [] for td in driver.execute_script( 'return $(arguments[0]).find(arguments[1])', tr, 'td'): spans = [] for span in driver.execute_script( 'return $(arguments[0]).find(arguments[1])', td, 'span'): text = span.text.strip() if text: spans.append(text) row.append(' '.join(spans)) rows.append(row) tables.append(rows) print h3s[0].text print '-' * len(h3s[0].text) print h3s[1].text print format_table(tables[0], header_rows=1) print h3s[2].text print format_table(tables[1], header_rows=1)
def print_rml_table(browser): story = browser.query.tag('story').getHTML() table = [] for row in queryXML('//blocktable/tr', story): cells = queryXML('//td/text()', row) table.append(cells) print format_table(table, header_rows=1)
def print_schedules(browser): title_sel = '.container .body > div > h3:not(".done-link")' rows = [] for title in browser.driver.execute_script('return $(arguments[0])', title_sel): print title.text for table in browser.driver.execute_script( 'return $(arguments[0]).next().find(arguments[1])', title, 'table.timetable'): rows.append([ th.text for th in browser.driver.execute_script( 'return $(arguments[0]).find(arguments[1])', table, 'th.day') ]) for tr in browser.driver.execute_script( 'return $(arguments[0]).find(arguments[1])', table, 'tbody tr'): row = [] for td in browser.driver.execute_script( 'return $(arguments[0]).find(arguments[1])', tr, 'td'): row.append(td.text) rows.append(row) print format_table(rows, header_rows=1)
def format_weekly_calendar(contents): table = [] for n, row in enumerate(queryHTML('//table[@id="calendar-view-week"]//tr', contents)): if n == 0: header = [] for cell in queryHTML('//tr//th/a/text()', str(row)): header.append(cell) table.append(header) else: block = [] for cell in queryHTML('//tr//td', str(row)): events = [] for event in queryHTML('//td//a//span/text()', str(cell)): events.append(event) block.append(", ".join(events)) table.append(block) return format_table(table, header_rows=1)
def format_weekly_calendar(contents): table = [] for n, row in enumerate( queryHTML('//table[@id="calendar-view-week"]//tr', contents)): if n == 0: header = [] for cell in queryHTML('//tr//th/a/text()', str(row)): header.append(cell) table.append(header) else: block = [] for cell in queryHTML('//tr//td', str(row)): events = [] for event in queryHTML('//td//a//span/text()', str(cell)): events.append(event) block.append(", ".join(events)) table.append(block) return format_table(table, header_rows=1)