forked from yellekelyk/scrape-spec
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSpecDataBase.py
38 lines (28 loc) · 1.02 KB
/
SpecDataBase.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from ordereddict import OrderedDict
import SpecDataElem
class SpecDataBase:
"A Base class for parsing Spec tables"
def __init__(self, soup, elem=SpecDataElem):
self.__elem = elem
tabs = self.htmlTables(soup)
self.__tables = OrderedDict()
for tab in tabs:
table = self.parseTable(tab)
if table.name() not in self.__tables:
self.__tables[table.name()] = table
else:
raise Exception("Table " + table.name() + " duplicated!")
def getElem(self):
return self.__elem
def htmlTables(self, soup):
raise Exception("htmlTables() must be redefined!")
def getNames(self):
return self.__tables.keys()
def getTable(self, name):
return self.__tables[name]
def parseTable(self, tab):
raise Exception("parseTable() must be redefined!")
def numTables(self):
return(len(self.__tables))
def toString(self, name):
return self.__tables[name].toString()