diff pyikriam/buildings.py @ 168:8f699a9da6c0

Extract building level of townhalls. - townhall class is responding to extract information about townhall.
author Thinker K.F. Li <thinker@branda.to>
date Sun, 02 Nov 2008 02:26:28 +0800
parents
children 9f248c8460ce
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pyikriam/buildings.py	Sun Nov 02 02:26:28 2008 +0800
@@ -0,0 +1,45 @@
+from lazy.www import c
+from lxml import etree
+from StringIO import StringIO
+
+class position(object):
+    def __init__(self, build_type, city_id, idx, baseurl):
+        self._baseurl = baseurl + '/index.php'
+        self.build_type = build_type
+        self.city_id = city_id
+        self.idx = idx
+        self._params = {'view': 'buildingGround',
+                        'id': city_id,
+                        'position': idx}
+        pass
+
+    def get_page(self):
+        page = c(self._baseurl).get(self._params).get_content()
+        return page
+    pass
+
+class townhall(position):
+    xpath_patterns = {
+        'level': '/div/div/div[@class=\'buildingLevel\']/text()'
+        }
+
+    def __init__(self, city_id, idx, baseurl):
+        super(townhall, self).__init__('townhall', city_id, idx, baseurl)
+        pass
+
+    def _sync(self, page):
+        parser = etree.HTMLParser(encoding='utf8')
+        page_dom = etree.parse(StringIO(page), parser)
+        xpath_building = '/html/body/div/div'
+        for name, ptn in self.xpath_patterns.items():
+            path = xpath_building + ptn
+            value = page_dom.xpath(path)[0]
+            setattr(self, name, value)
+            pass
+        pass
+
+    def sync(self):
+        page = self.get_page()
+        self._sync(page)
+        pass
+    pass