Last active
February 13, 2018 10:53
-
-
Save icyflame/d89dd169de8262c62f39c1b7a849731a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"fmt" | |
"golang.org/x/net/html" | |
"log" | |
"strings" | |
) | |
// return the first tag in subtree for which reqd returns true (DFS) | |
func findReqd(doc *html.Node, reqd func(*html.Node) bool) *html.Node { | |
if reqd(doc) { | |
return doc | |
} | |
for c := doc.FirstChild; c != nil; c = c.NextSibling { | |
g := findReqd(c, reqd) | |
if g != nil { | |
return g | |
} | |
} | |
return nil | |
} | |
func tableTag(t *html.Node) bool { | |
if (t.Data == "table") { | |
a := t.Attr | |
for _, attr := range a { | |
if attr.Key == "id" && attr.Val == "disptab" { | |
return true | |
} | |
} | |
} | |
return false | |
} | |
func num_children(t *html.Node) int64 { | |
var num int64 | |
c := t.FirstChild | |
for c != nil { | |
if c.Type == html.ElementNode { | |
num += 1 | |
} | |
c = c.NextSibling | |
} | |
return num | |
} | |
func element_node_children(t *html.Node) []*html.Node { | |
ret := []*html.Node{} | |
for c := t.FirstChild; c != nil; c = c.NextSibling { | |
if c.Type == html.ElementNode { | |
ret = append(ret, c) | |
} | |
} | |
return ret | |
} | |
func parse_html(input string) [][]string { | |
doc, err := html.Parse(strings.NewReader(input)) | |
if err != nil { | |
log.Fatal(err) | |
} | |
rTag := findReqd(doc, tableTag) | |
tbody := rTag.LastChild | |
rows := element_node_children(tbody) | |
ret := [][]string{} | |
for _, c := range rows { | |
kids := element_node_children(c) | |
// TODO: make this a constant | |
if len(kids) == 7 && kids[0].Data != "th" { | |
kid_info := []string{} | |
for _, tag := range kids { | |
log.Print(tag.FirstChild.Data) | |
kid_info = append(kid_info, tag.FirstChild.Data) | |
} | |
ret = append(ret, kid_info) | |
} | |
} | |
return ret | |
} | |
func main() { | |
fmt.Println("Hello, playground") | |
s := ` | |
<script language='JavaScript' type='text/javascript' src='./build/common.js'></script> | |
<script> | |
function getDept() | |
{ | |
document.frm.method="POST" ; | |
document.frm.action="timetable_track.jsp?action=second&dept="+document.getElementById('dept').value; | |
document.frm.submit(); | |
} | |
function openWin() | |
{ | |
// window.open("view/slot_info.jsp","mywindow","menubar=1,resizable=1,width=1000,height=1000"); | |
window.open("view/slot_info.jsp"); | |
} | |
function changeSemester(val){ | |
var curSes =document.getElementById('for_session').value; | |
var curSem =document.getElementById('for_semester').value; | |
if(val=='N'){ | |
if(curSem=='SPRING'){ | |
document.getElementById('for_semester').value='AUTUMN'; | |
var year=curSes.split('-'); | |
var nextSem=year[1]+'-'+(parseInt(year[1])+1); | |
document.getElementById('for_session').value=nextSem; | |
}else{ | |
document.getElementById('for_semester').value='SPRING'; | |
} | |
}else if(val=='P'){ | |
if(curSem=='AUTUMN'){ | |
document.getElementById('for_semester').value='SPRING'; | |
var year=curSes.split('-'); | |
var prevSem=(parseInt(year[0])-1)+'-'+year[0]; | |
document.getElementById('for_session').value=prevSem; | |
}else{ | |
document.getElementById('for_semester').value='AUTUMN'; | |
} | |
} | |
//recall(); | |
// submitForm(); | |
} | |
function printInfo(elementid,styleSheetHref){ | |
var prtContent="<html><head>"; | |
if(typeof styleSheetHref != 'undefined'){ | |
prtContent+="<link rel='StyleSheet' href='"+styleSheetHref+"' />"; | |
} | |
prtContent+="</head><body>"; | |
prtContent+=document.getElementById(elementid).innerHTML; | |
prtContent+="</body>"; | |
//alert(prtContent); | |
var WinPrint =window.open('','','left=0,top=0,width=1,height=1,toolbar=0,scrollbars=0,status=0'); | |
WinPrint.document.write(prtContent); | |
WinPrint.document.close(); | |
WinPrint.focus(); | |
WinPrint.print(); | |
WinPrint.close(); | |
} | |
</script> | |
<html> | |
<head> | |
<link rel='StyleSheet' href='./css/style1.css' /> | |
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> | |
<title>JSP Page</title> | |
</head> | |
<body onload="save()"><TABLE align="center"><TR><TD><form name="frm" action="timetable_track.jsp?action=second" method="post"> | |
<table align="center" border="0" cellpadding="0" cellspacing="0" width="80%"><tr><td> | |
<input type="button" class="button" value=" Print " onclick="printInfo('printIt','./css/style1.css')"/> | |
<table align="left" border="0" cellpadding="0" cellspacing="0" width="100%"> | |
<tr> | |
<td align="left"><b>Department : CS</b></td> | |
<td align="right"><a href="timetable_track.jsp?action=first">Back</a></td> | |
</tr></table> | |
</td></tr> | |
<tr><td> | |
<div id="printIt"> <table align="center" border="0"> | |
<tr> | |
<td valign="top"> | |
<table id=disptab border=1 style='border-color:#557CD7' cellspacing=0 cellpadding=3 align="center"> | |
<tr><td colspan="7"><center><b>List Of Subjects Allocated</b></center></td></tr> | |
<tr> | |
<th>Subject No</th> | |
<th>Subject Name</th> | |
<th>Faculty Name</th> | |
<th>Ltp</th> | |
<th>Credits</th> | |
<th>Slot</th> | |
<th>Room</th> | |
<tr><td>CS10001</td> | |
<td>PROGRAMMING AND DATA STRUCTURES</td> | |
<td>Rogers Mathew,Aritra Hazra,Pawan Goyal,Animesh Mukherjee</td> | |
<td>3-0-0</td> | |
<td>3</td> | |
<td>--</td> | |
<tr><td>CS11001</td> | |
<td>PROGRAMMING AND DATA STRUCTURE</td> | |
<td>Pawan Goyal,Rogers Mathew</td> | |
<td>3-1-0</td> | |
<td>4</td> | |
<td>--</td> | |
<tr><td>CS19001</td> | |
<td>PROGRAMMING AND DATA STRUCTURE LAB.</td> | |
<td>Saptarshi Ghosh,Rogers Mathew</td> | |
<td>0-0-3</td> | |
<td>2</td> | |
<td>--</td> | |
<tr><td>CS19101</td> | |
<td>PROGRAMMING AND DATA STRUCTURES TUTORIAL AND LABORATORY</td> | |
<td>Saptarshi Ghosh,Somindu Chaya Ramanna,Pabitra Mitra,Rogers Mathew,Debasis Samanta,Bivas Mitra,Sujoy Ghose,Sudebkumar Prasant Pal,Chittaranjan Mandal,Sourangshu Bhattacharya</td> | |
<td>0-1-3</td> | |
<td>3</td> | |
<td>--</td> | |
<tr><td>CS20006</td> | |
<td>SOFTWARE ENGINEERING</td> | |
<td>Sudip Misra</td> | |
<td>3-0-0</td> | |
<td>3</td> | |
<td>G3</td> | |
<td>NC132</td> | |
<tr><td>CS21002</td> | |
<td>SWITCHING CIRCUITS AND LOGIC DESIGN</td> | |
<td>Dipanwita Roy Chowdhury</td> | |
<td>3-1-0</td> | |
<td>4</td> | |
<td>E4</td> | |
<td>NC132</td> | |
<tr><td>CS21003</td> | |
<td>ALGORITHMS - I</td> | |
<td>Abhijit Das</td> | |
<td>3-1-0</td> | |
<td>4</td> | |
<td>D4</td> | |
<td>NC233</td> | |
<tr><td>CS21004</td> | |
<td>FORMAL LANGUAGE AND AUTOMATA THEORY</td> | |
<td>Soumyajit Dey</td> | |
<td>3-1-0</td> | |
<td>4</td> | |
<td>C4</td> | |
<td>NC132</td> | |
<tr><td>CS29002</td> | |
<td>SWITCHING CIRCUITS LABORATORY</td> | |
<td>Rajat Subhra Chakraborty,Dipanwita Roy Chowdhury</td> | |
<td>0-0-3</td> | |
<td>2</td> | |
<td>J</td> | |
<td>HWLab(Annex)</td> | |
<tr><td>CS29003</td> | |
<td>ALGORITHMS LABORATORY</td> | |
<td>Aritra Hazra,Abhijit Das</td> | |
<td>0-0-3</td> | |
<td>2</td> | |
<td>L</td> | |
<td>0</td> | |
<tr><td>CS29006</td> | |
<td>SOFTWARE ENGINEERING LABORATORY</td> | |
<td>Sudip Misra,Rajib Mall</td> | |
<td>0-0-3</td> | |
<td>2</td> | |
<td>P</td> | |
<td>SWLab(Annex)</td> | |
<tr><td>CS30002</td> | |
<td>OPERATING SYSTEMS</td> | |
<td>Indranil Sengupta</td> | |
<td>3-0-0</td> | |
<td>3</td> | |
<td>A3</td> | |
<td>NC334</td> | |
<tr><td>CS31006</td> | |
<td>COMPUTER NETWORKS</td> | |
<td>Sandip Chakraborty</td> | |
<td>3-0-0</td> | |
<td>3</td> | |
<td>B3</td> | |
<td>NC334</td> | |
<tr><td>CS31702</td> | |
<td>COMPUTER ARCHITECTURE AND OPERATING SYSTEM</td> | |
<td>Krothapalli Sreenivasa Rao</td> | |
<td>4-0-0</td> | |
<td>4</td> | |
<td>D4</td> | |
<td>NR321</td> | |
<tr><td>CS39002</td> | |
<td>OPERATING SYSTEMS LABORATORY</td> | |
<td>Partha Sarathi Dey,Indranil Sengupta</td> | |
<td>0-0-3</td> | |
<td>2</td> | |
<td>J</td> | |
<td>SWLab(Annex)</td> | |
<tr><td>CS39006</td> | |
<td>NETWORKS LAB.</td> | |
<td>Sandip Chakraborty,Krothapalli Sreenivasa Rao</td> | |
<td>0-0-3</td> | |
<td>2</td> | |
<td>N</td> | |
<td>SWLab(Annex)</td> | |
<tr><td>CS39008</td> | |
<td>PROJECT SEMINAR</td> | |
<td>Bivas Mitra,Dipanwita Roy Chowdhury</td> | |
<td>0-0-3</td> | |
<td>2</td> | |
<td>--</td> | |
<tr><td>CS40032</td> | |
<td>PRINCIPLES OF PROGRAMMING LANGUAGES</td> | |
<td>Partha Pratim Das</td> | |
<td>3-0-0</td> | |
<td>3</td> | |
<td>H3</td> | |
<td>CSE-119</td> | |
<tr><td>CS43002</td> | |
<td>DATABASE MANAGEMENT SYSTEMS</td> | |
<td>Soumya Kanti Ghosh,Shamik Sural</td> | |
<td>3-0-3</td> | |
<td>5</td> | |
<td>F4, L</td> | |
<td>NC334, SWLab(Annex)</td> | |
<tr><td>CS43004</td> | |
<td>COMPUTER GRAPHICS</td> | |
<td>Partha Bhowmick</td> | |
<td>3-0-3</td> | |
<td>5</td> | |
<td>F4, L</td> | |
<td>CSE-107, CSE-Software-Lab</td> | |
<tr><td>CS47006</td> | |
<td>PROJECT- PART 2</td> | |
<td>Partha Bhowmick</td> | |
<td>0-0-9</td> | |
<td>6</td> | |
<td>--</td> | |
<tr><td>CS48004</td> | |
<td>COMPREHENSIVE VIVA</td> | |
<td>Partha Bhowmick</td> | |
<td>0-0-0</td> | |
<td>2</td> | |
<td>--</td> | |
<tr><td>CS57004</td> | |
<td>PROJECT- PART 2</td> | |
<td>Animesh Mukherjee</td> | |
<td>0-0-20</td> | |
<td>13</td> | |
<td>--</td> | |
<tr><td>CS58004</td> | |
<td>COMPREHENSIVE VIVA</td> | |
<td>Animesh Mukherjee</td> | |
<td>0-0-0</td> | |
<td>2</td> | |
<td>--</td> | |
<tr><td>CS59001</td> | |
<td>DESIGN LABORATORY</td> | |
<td>Animesh Mukherjee</td> | |
<td>0-0-3</td> | |
<td>2</td> | |
<td>O</td> | |
<td>0</td> | |
<tr><td>CS60002</td> | |
<td>DISTRIBUTED SYSTEMS</td> | |
<td>Arobinda Gupta</td> | |
<td>4-0-0</td> | |
<td>4</td> | |
<td>F4</td> | |
<td>CSE-120</td> | |
<tr><td>CS60003</td> | |
<td>HIGH PERFORMANCE COMPUTER ARCHITECTURE</td> | |
<td>Rajib Mall</td> | |
<td>4-0-0</td> | |
<td>4</td> | |
<td>A3</td> | |
<td>NC344</td> | |
<tr><td>CS60004</td> | |
<td>HARDWARE SECURITY</td> | |
<td>Debdeep Mukhopadhyay</td> | |
<td>3-0-0</td> | |
<td>3</td> | |
<td>U3</td> | |
<td>CSE-119</td> | |
<tr><td>CS60006</td> | |
<td>COMPUTATIONAL PHYLOGENETICS AND MOLECULAR EVOLUTION</td> | |
<td>Jayanta Mukhopadhyay</td> | |
<td>3-0-0</td> | |
<td>3</td> | |
<td>G3</td> | |
<td>CSE-108</td> | |
<tr><td>CS60010</td> | |
<td>DEEP LEARNING</td> | |
<td>Sudeshna Sarkar</td> | |
<td>3-0-0</td> | |
<td>3</td> | |
<td>D3</td> | |
<td>NC232</td> | |
<tr><td>CS60012</td> | |
<td>COMPUTER GRAPHICS</td> | |
<td>Partha Bhowmick</td> | |
<td>3-1-0</td> | |
<td>4</td> | |
<td>F4</td> | |
<td>CSE-107</td> | |
<tr><td>CS60020</td> | |
<td>FOUNDATIONS OF ALGORITHM DESIGN & MACHINE LEARNING</td> | |
<td>Sourangshu Bhattacharya</td> | |
<td>4-0-0</td> | |
<td>4</td> | |
<td>C4</td> | |
<td>CSE-107</td> | |
<tr><td>CS60030</td> | |
<td>FORMAL SYSTEMS</td> | |
<td>Pallab Dasgupta</td> | |
<td>3-1-0</td> | |
<td>4</td> | |
<td>C4</td> | |
<td>CSE-108</td> | |
<tr><td>CS60036</td> | |
<td>INTELLIGENT SYSTEMS</td> | |
<td>Niloy Ganguly</td> | |
<td>3-0-0</td> | |
<td>3</td> | |
<td>F3</td> | |
<td>CSE-302</td> | |
<tr><td>CS60042</td> | |
<td>ADVANCES IN COMPILER CONSTRUCTION</td> | |
<td>Chittaranjan Mandal</td> | |
<td>3-1-0</td> | |
<td>4</td> | |
<td>U4</td> | |
<td>CSE-120</td> | |
<tr><td>CS60050</td> | |
<td>MACHINE LEARNING</td> | |
<td>Saptarshi Ghosh</td> | |
<td>3-0-0</td> | |
<td>3</td> | |
<td>D3</td> | |
<td>NC231</td> | |
<tr><td>CS60052</td> | |
<td>ADVANCED DIGITAL IMAGE PROCESSING AND COMPUTER VISION</td> | |
<td>Jayanta Mukhopadhyay</td> | |
<td>3-0-0</td> | |
<td>3</td> | |
<td>S3</td> | |
<td>CSE-119</td> | |
<tr><td>CS60058</td> | |
<td>FAULT TOLERANT SYSTEMS</td> | |
<td>Rajat Subhra Chakraborty</td> | |
<td>3-0-0</td> | |
<td>3</td> | |
<td>G3</td> | |
<td>CSE-107</td> | |
<tr><td>CS60064</td> | |
<td>COMPUTATIONAL GEOMETRY</td> | |
<td>Sudebkumar Prasant Pal</td> | |
<td>3-0-0</td> | |
<td>3</td> | |
<td>S3</td> | |
<td>CSE-107</td> | |
<tr><td>CS60073</td> | |
<td>ADVANCED MACHINE LEARNING</td> | |
<td>Pabitra Mitra</td> | |
<td>3-0-0</td> | |
<td>3</td> | |
<td>F3</td> | |
<td>CSE-119</td> | |
<tr><td>CS60078</td> | |
<td>COMPLEX NETWORK</td> | |
<td>Bivas Mitra</td> | |
<td>3-0-0</td> | |
<td>3</td> | |
<td>U3</td> | |
<td>CSE-108</td> | |
<tr><td>CS60088</td> | |
<td>FOUNDATIONS OF CRYPTOGRAPHY</td> | |
<td>Somindu Chaya Ramanna</td> | |
<td>3-1-0</td> | |
<td>4</td> | |
<td>C4</td> | |
<td>CSE-119</td> | |
<tr><td>CS60092</td> | |
<td>INFORMATION RETRIEVAL</td> | |
<td>Pawan Goyal,Animesh Mukherjee</td> | |
<td>3-0-0</td> | |
<td>3</td> | |
<td>G3</td> | |
<td>NR123,NR123</td> | |
<tr><td>CS60094</td> | |
<td>COMPUTATIONAL NUMBER THEORY</td> | |
<td>Abhijit Das,Debdeep Mukhopadhyay</td> | |
<td>3-0-0</td> | |
<td>3</td> | |
<td>G3</td> | |
<td>CSE-119</td> | |
<tr><td>CS60100</td> | |
<td>ADVANCED MICROPROCESSOR BASED SYSTEMS</td> | |
<td>Partha Sarathi Dey</td> | |
<td>3-0-0</td> | |
<td>3</td> | |
<td>V3</td> | |
<td>CSE-108</td> | |
<tr><td>CS61060</td> | |
<td>COMPUTATIONAL BIOPHYSICS: ALGORITHMS TO APPLICATIONS</td> | |
<td>Pralay Mitra</td> | |
<td>3-1-0</td> | |
<td>4</td> | |
<td>U4</td> | |
<td>CSE-107</td> | |
<tr><td>CS61064</td> | |
<td>HIGH PERFORMANCE PARALLEL PROGRAMMING</td> | |
<td>Pralay Mitra,Soumyajit Dey</td> | |
<td>3-1-0</td> | |
<td>4</td> | |
<td>V4</td> | |
<td>CSE-107</td> | |
<tr><td>CS67102</td> | |
<td>THESIS PART-II</td> | |
<td>Sudip Misra</td> | |
<td>0-0-0</td> | |
<td>20</td> | |
<td>--</td> | |
<tr><td>CS68101</td> | |
<td>COMPREHENSIVE VIVA-VOCE</td> | |
<td>Pawan Goyal</td> | |
<td>0-0-0</td> | |
<td>3</td> | |
<td>--</td> | |
<tr><td>CS69002</td> | |
<td>SEMINAR-II</td> | |
<td>Pawan Goyal</td> | |
<td>0-0-3</td> | |
<td>2</td> | |
<td>--</td> | |
<tr><td>CS69012</td> | |
<td>COMPUTING LAB II</td> | |
<td>Niloy Ganguly</td> | |
<td>0-0-6</td> | |
<td>4</td> | |
<td>X4, N</td> | |
<td>CSE-Software-Lab</td> | |
<tr><td>IT60020</td> | |
<td>CLOUD COMPUTING</td> | |
<td>Soumya Kanti Ghosh</td> | |
<td>3-0-0</td> | |
<td>3</td> | |
<td>C3</td> | |
<td>NC233</td> | |
<tr><td>IT60108</td> | |
<td>SOFT COMPUTING APPLICATIONS</td> | |
<td>Debasis Samanta</td> | |
<td>4-0-0</td> | |
<td>4</td> | |
<td>D4</td> | |
<td>ITCLA1</td> | |
</tr></table> | |
</td> | |
</tr> | |
</table></div> | |
</td></tr></table></form></TD></TR></TABLE> | |
</body> | |
</html> | |
` | |
result := parse_html(s) | |
log.Print(result) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment