示例#1
0
 def removeNodesViaRegEx(self, doc, pattern):
     for selector in ['id', 'class']:
         reg = "//*[re:test(@%s, '%s', 'i')]" % (selector, pattern)
         naughtyList = cache.xpath(reg, doc, namespaces={'re':self.regexpNS})
         for node in naughtyList:
             Parser.remove(node)
     return doc
示例#2
0
 def removeNodesViaRegEx(self, doc, pattern):
     for selector in ['id', 'class']:
         reg = "//*[re:test(@%s, '%s', 'i')]" % (selector, pattern)
         naughtyList = cache.xpath(reg,
                                   doc,
                                   namespaces={'re': self.regexpNS})
         for node in naughtyList:
             Parser.remove(node)
     return doc
示例#3
0
 def cleanBadTags(self, doc):
     
     # ids
     naughtyList = cache.xpath(self.queryNaughtyIDs, doc,
                                     namespaces={'re':self.regexpNS})
     for node in naughtyList:
         Parser.remove(node)
     
     # class
     naughtyClasses = cache.xpath(self.queryNaughtyClasses, doc,
                                     namespaces={'re':self.regexpNS})
     for node in naughtyClasses:
         Parser.remove(node)
     
     # name
     naughtyNames = cache.xpath(self.queryNaughtyNames, doc,
                                     namespaces={'re':self.regexpNS})
     for node in naughtyNames:
         Parser.remove(node)
     
     return doc
示例#4
0
 def getElementsByTag(self, node, tag=None, attr=None, value=None, childs=False):
     
     NS = "http://exslt.org/regular-expressions"
     # selector = tag or '*'
     selector = 'descendant-or-self::%s' % (tag or '*')
     if attr and value:
         selector = '%s[re:test(@%s, "%s", "i")]' % (selector, attr, value)
         #selector = '%s[%s="%s"]' % (selector, attr, value)
     #elems = node.cssselect(selector)
     elems = cache.xpath(selector, node, namespaces={"re": NS})
     # remove the root node
     # if we have a selection tag
     if node in elems and (tag or childs):
         elems.remove(node)
     return elems
示例#5
0
    def cleanBadTags(self, doc):

        # ids
        naughtyList = cache.xpath(self.queryNaughtyIDs,
                                  doc,
                                  namespaces={'re': self.regexpNS})
        for node in naughtyList:
            Parser.remove(node)

        # class
        naughtyClasses = cache.xpath(self.queryNaughtyClasses,
                                     doc,
                                     namespaces={'re': self.regexpNS})
        for node in naughtyClasses:
            Parser.remove(node)

        # name
        naughtyNames = cache.xpath(self.queryNaughtyNames,
                                   doc,
                                   namespaces={'re': self.regexpNS})
        for node in naughtyNames:
            Parser.remove(node)

        return doc
示例#6
0
    def getElementsByTag(self,
                         node,
                         tag=None,
                         attr=None,
                         value=None,
                         childs=False):

        NS = "http://exslt.org/regular-expressions"
        # selector = tag or '*'
        selector = 'descendant-or-self::%s' % (tag or '*')
        if attr and value:
            selector = '%s[re:test(@%s, "%s", "i")]' % (selector, attr, value)
            #selector = '%s[%s="%s"]' % (selector, attr, value)
        #elems = node.cssselect(selector)
        elems = cache.xpath(selector, node, namespaces={"re": NS})
        # remove the root node
        # if we have a selection tag
        if node in elems and (tag or childs):
            elems.remove(node)
        return elems
示例#7
0
 def getElementById(self, node, idd):
     selector = '//*[@id="%s"]' % idd
     elems = cache.xpath(selector, node)
     if elems:
         return elems[0]
     return None
示例#8
0
 def getComments(self, node):
     return cache.xpath('//comment()', node)
示例#9
0
 def getElementById(self, node, idd):
     selector = '//*[@id="%s"]' % idd
     elems = cache.xpath(selector, node)
     if elems:
         return elems[0]
     return None
示例#10
0
 def getComments(self, node):
     return cache.xpath('//comment()', node)