Пример #1
0
    def _getElementById_IE67(self, elementId):
        from DOMImplementation import DOMImplementation

        def _match_tag(tag, p):
            return p in tag.attrs and tag.attrs[p] == elementId

        def match_tag(tag, id):
            if _match_tag(tag, id):
                return True

            return False

        def filter_tags_id(tag):
            return tag.has_attr('id')

        def filter_tags_name(tag):
            return tag.has_attr('name')

        for tag in self.doc.find_all(filter_tags_id):
            if match_tag(tag, 'id'):
                return DOMImplementation.createHTMLElement(self, tag)

        for tag in self.doc.find_all(filter_tags_name):
            if match_tag(tag, 'name'):
                return DOMImplementation.createHTMLElement(self, tag)

        return None
Пример #2
0
    def item(self, index):
        from DOMImplementation import DOMImplementation

        node = self.nodes[index]

        return DOMImplementation.createHTMLElement(self.doc,
                                                   node) if node else None
Пример #3
0
    def createElement(self, tagname):
        from DOMImplementation import DOMImplementation

        element = DOMImplementation.createHTMLElement(self, BeautifulSoup.Tag(parser = self.doc, name = tagname))
        if self.onCreateElement:
            self.onCreateElement(element)
        
        return element
Пример #4
0
    def namedItem(self, name):
        from DOMImplementation import DOMImplementation

        for node in self.nodes:
            if node.nodeName == name:
                return DOMImplementation.createHTMLElement(self.doc, node) if node else None

        return None
Пример #5
0
    def namedItem(self, name):
        from DOMImplementation import DOMImplementation

        for node in self.nodes:
            if node.nodeName == name:
                return DOMImplementation.createHTMLElement(
                    self.doc, node) if node else None

        return None
Пример #6
0
    def _querySelector(self, selectors):
        from DOMImplementation import DOMImplementation

        try:
            s = self.tag.select(selectors)
        except:
            return None

        if s and s[0]:
            return DOMImplementation.createHTMLElement(self, s[0])

        return None
Пример #7
0
    def _querySelector(self, selectors):
        from DOMImplementation import DOMImplementation

        try:
            s = self.doc.select(selectors)
        except:  #pylint:disable=bare-except
            return None

        if s and s[0]:
            return DOMImplementation.createHTMLElement(self, s[0])

        return None
Пример #8
0
    def _querySelector(self, selectors):
        from DOMImplementation import DOMImplementation

        try:
            s = self.doc.select(selectors)
        except:
            return None

        if s and s[0]:
            return DOMImplementation.createHTMLElement(self, s[0])

        return None
Пример #9
0
    def _querySelector(self, selectors):
        from DOMImplementation import DOMImplementation

        try:
            s = self.tag.select(selectors)
        except: #pylint:disable=bare-except
            return None

        if s and s[0]:
            return DOMImplementation.createHTMLElement(self, s[0])

        return None
Пример #10
0
    def createElement(self, tagname, tagvalue = None):
        from DOMImplementation import DOMImplementation

        # Internet Explorer 8 and below also support the syntax
        # document.createElement('<P>')
        if log.ThugOpts.Personality.isIE() and log.ThugOpts.Personality.browserVersion < '9.0':
            if tagname.startswith('<') and '>' in tagname:
                tagname = tagname[1:].split('>')[0]

        element = DOMImplementation.createHTMLElement(self, BeautifulSoup.Tag(parser = self.doc, name = tagname))
        if self.onCreateElement:
            self.onCreateElement(element)
        
        return element
Пример #11
0
    def getter(self):
        children = getChildren(self.doc, parts)

        if xpath == '/html/body[1]' and not children:
            children = [self.doc]

        if parts[-1] == 'text()':
            return "".join(children)

        m = RE_INDEXED.match(parts[-1])

        if m:
            try:
                from DOMImplementation import DOMImplementation
                string.atoi(m.group(2))

                return DOMImplementation.createHTMLElement(self.doc, children[0]) if len(children) > 0 else None
            except ValueError: 
                pass
                
        return HTMLCollection(self.doc, children)
Пример #12
0
    def createElement(self, tagname, tagvalue=None):
        # zomo
        import re
        match = re.search('iframe', str(tagname).lower())
        if match:
            log.ThugLogging.add_behavior_warn(
                "[iframe injection: createElement] %s" % str(tagname))

        from DOMImplementation import DOMImplementation

        # Internet Explorer 8 and below also support the syntax
        # document.createElement('<P>')
        if log.ThugOpts.Personality.isIE(
        ) and log.ThugOpts.Personality.browserVersion < '9.0':
            if tagname.startswith('<') and '>' in tagname:
                tagname = tagname[1:].split('>')[0]

        element = DOMImplementation.createHTMLElement(
            self, BeautifulSoup.Tag(parser=self.doc, name=tagname))
        if self.onCreateElement:
            self.onCreateElement(element)

        return element
Пример #13
0
    def _getElementById(self, elementId):
        from DOMImplementation import DOMImplementation

        tag = self.doc.find(id = elementId)
        return DOMImplementation.createHTMLElement(self, tag) if tag else None
Пример #14
0
 def item(self, index):
     from DOMImplementation import DOMImplementation
     return DOMImplementation.createHTMLElement(
         self.doc, self.nodes[index]) if 0 <= index and index < len(
             self.nodes) else None
Пример #15
0
    def item(self, index):
        from DOMImplementation import DOMImplementation

        node = self.nodes[index]

        return DOMImplementation.createHTMLElement(self.doc, node) if node else None
Пример #16
0
 def item(self, index):
     from DOMImplementation import DOMImplementation
     return DOMImplementation.createHTMLElement(self.doc, self.nodes[index]) if 0 <= index and index < len(self.nodes) else None
Пример #17
0
Файл: w3c.py Проект: medim/thug
def getDOMImplementation(dom = None, **kwds):
    return DOMImplementation(dom if dom else BeautifulSoup.BeautifulSoup(), **kwds)
Пример #18
0
Файл: w3c.py Проект: medim/thug
def parseString(html, **kwds):
    return DOMImplementation(BeautifulSoup.BeautifulSoup(html, "html5lib"), **kwds)
Пример #19
0
 def isSupported(self, feature, version):
     from DOMImplementation import DOMImplementation
     return DOMImplementation.hasFeature(feature, version)
Пример #20
0
 def isSupported(self, feature, version):
     from DOMImplementation import DOMImplementation
     return DOMImplementation.hasFeature(feature, version)