• TEXTO FOR

 #414903  por sanko
 01 Jun 2013, 14:52
A ver amigo no entendi muy bien que quieres hacer.
Si me explicas un poco más detalladamente que es lo que quieres hacer tal vez pueda ayudarte.

Noto que quieres parsear un html para encontrar los temas, lo que no me dices es cual es la página web que quieres parsear.
 #414918  por sanko
 01 Jun 2013, 18:22
ok bro, de todas formas si quieres mi consejo es más eficiente que uses regulares que beautifulsoap.
Si te sirve de algo nosotros hicimos un script para GRAMPUS para extraer los meta de los html y parseamos la info con regulares.

Te lo pego aqui : [ Debe registrarse para ver este enlace ]
import re,sys
class ms_Meta():
        
        def __init__(self,pathFile):
                
                self.pathFile = pathFile
                self.metaData = {"Scripts":[],"Css":[]}
                self.regexps = ["<(.*)meta(.*)http-equiv(.*)=(.*)[\"\'](.+)[\"\'](.*)content(.*)=(.*)[\"\'](.+)[\"\'](.*)",
                                                "<(.*)meta(.*)name(.*)=(.*)[\"\'](.+)[\"\'](.*)content(.*)=(.*)[\"\'](.+)[\"\'](.*)",
                                                "<(.*)script(.*)src(.*)=(.*)[\"\'](.+?)[\"\'](.*)",
                                                "<(.*)link(.*)href(.*)=(.*)[\"\'](.+?)[\"\'](.*)",
                                                "<(.*)meta(.*)property(.*)=(.*)[\"\'](.+)[\"\'](.*)content(.*)=(.*)[\"\'](.+)[\"\'](.*)",
                                                "<(.*)meta(.*)content(.*)=(.*)[\"\'](.+)[\"\'](.*)name(.*)=(.*)[\"\'](.+)[\"\'](.*)",
                                                "<(.*)meta(.*)content(.*)=(.*)[\"\'](.+)[\"\'](.*)http-equiv(.*)=(.*)[\"\'](.+)[\"\'](.*)",
                                                "<(.*)meta(.*)content(.*)=(.*)[\"\'](.+)[\"\'](.*)property(.*)=(.*)[\"\'](.+)[\"\'](.*)"]
                self.__openFile()
                self.__parserMetaName()
        
        # This method open file and close it if produced an exception
        def __openFile(self):
                
                try:
                        self.fileParsed = open(self.pathFile)
                except:
                        sys.exit(0)
        
        # This method will launch regular expressions against html file lines, adding wanted metadata to dictionary
        def __parserMetaName(self):
                
                # We go line by line html
                for linea in self.fileParsed.readlines():
                        for reg in self.regexps: #For every regular expression in regexps
                                regexp = re.match(reg,linea.strip().lower()) # RegExp against trimed and lowecased line
                                if reg==self.regexps[2]: 
                                        if regexp != None: 
                                                self.metaData["Scripts"].append(regexp.group(5))
                                elif reg==self.regexps[3]:
                                        if regexp != None: # If the regular expression is different from None
                                                self.metaData["Css"].append(regexp.group(5)) # Add metaData to dictionary
                                elif reg==self.regexps[5] or reg==self.regexps[6] or reg==self.regexps[7]:
                                        if regexp != None:
                                                self.metaData[regexp.group(9)] = regexp.group(5)
                                else: 
                                        if regexp != None: 
                                                self.metaData[regexp.group(5)] = regexp.group(9)
                                
                # Show Info
                for elemento in self.metaData:
                        print elemento + "  " + str(self.metaData[elemento])+"\n"
        
if __name__ == "__main__":                      
        ms_Meta("index4.html")