[browser2] add an XMLPage

This commit is contained in:
Bezleputh 2014-04-03 16:34:36 +02:00
commit 0ed7ed2b2d
2 changed files with 12 additions and 3 deletions

View file

@ -18,8 +18,8 @@
# along with weboob. If not, see <http://www.gnu.org/licenses/>. # along with weboob. If not, see <http://www.gnu.org/licenses/>.
from .browser import BaseBrowser, DomainBrowser, Wget, Firefox, UrlNotAllowed, Profile from .browser import BaseBrowser, DomainBrowser, Wget, Firefox, UrlNotAllowed, Profile
from .page import PagesBrowser, BasePage, URL, HTMLPage, LoginBrowser, need_login, JsonPage, LoggedPage from .page import PagesBrowser, BasePage, URL, HTMLPage, LoginBrowser, need_login, JsonPage, LoggedPage, XMLPage
__all__ = ['BaseBrowser', 'DomainBrowser', 'Wget', 'Firefox', 'UrlNotAllowed', 'Profile', __all__ = ['BaseBrowser', 'DomainBrowser', 'Wget', 'Firefox', 'UrlNotAllowed', 'Profile', 'XMLPage',
'PagesBrowser', 'BasePage', 'URL', 'HTMLPage', 'LoginBrowser', 'need_login', 'JsonPage', 'LoggedPage'] 'PagesBrowser', 'BasePage', 'URL', 'HTMLPage', 'LoginBrowser', 'need_login', 'JsonPage', 'LoggedPage']

View file

@ -26,6 +26,7 @@ import sys
from copy import deepcopy from copy import deepcopy
from cStringIO import StringIO from cStringIO import StringIO
import lxml.html as html import lxml.html as html
import lxml.etree as etree
from weboob.tools.json import json from weboob.tools.json import json
from weboob.tools.ordereddict import OrderedDict from weboob.tools.ordereddict import OrderedDict
@ -332,7 +333,7 @@ class LoginBrowser(PagesBrowser):
self.password = password self.password = password
def do_login(self): def do_login(self):
"""" """
Abstract method to implement to login on website. Abstract method to implement to login on website.
It is call when a login is needed. It is call when a login is needed.
@ -417,12 +418,20 @@ class Form(OrderedDict):
""" """
return self.page.browser.location(self.request) return self.page.browser.location(self.request)
class JsonPage(BasePage): class JsonPage(BasePage):
def __init__(self, browser, response, *args, **kwargs): def __init__(self, browser, response, *args, **kwargs):
super(JsonPage, self).__init__(browser, response, *args, **kwargs) super(JsonPage, self).__init__(browser, response, *args, **kwargs)
self.doc = json.loads(response.text) self.doc = json.loads(response.text)
class XMLPage(BasePage):
def __init__(self, browser, response, *args, **kwargs):
super(XMLPage, self).__init__(browser, response, *args, **kwargs)
parser = etree.XMLParser(encoding=response.encoding)
self.doc = etree.parse(StringIO(response.content), parser)
class RawPage(BasePage): class RawPage(BasePage):
def __init__(self, browser, response, *args, **kwargs): def __init__(self, browser, response, *args, **kwargs):
super(RawPage, self).__init__(browser, response, *args, **kwargs) super(RawPage, self).__init__(browser, response, *args, **kwargs)