Web Analytics Made Easy - Statcounter

[HOME PAGE] [STORES] [CLASSICISTRANIERI.COM] [FOTO] [YOUTUBE CHANNEL]

Usuari:RRHGbot/cercador.py - Viquip??dia

Usuari:RRHGbot/cercador.py

De Viquip??dia

Gui?? derivat de replace.py per?? molt m??s simple, per cercar coses a la Viqui i desar el nom dels articles que trobi a un fitxer de text.

De moment (ver 0.1) nom??s pot cercar un sol text a un dump xml incloent tots els namespaces

# -*- coding: utf-8  -*-
"""
 cercador.py 
 versi??: 0.1
 descripci??: cerca un text o una expressi?? regular a un dump xml, 
             retorna un fitxer amb els noms dels articles,
             necessita pyWikipediaFramework

 ??s: cercador.py [-regex] "text a cercar" -xml:xmldump -bitacora:fitxer_bit??cora 

    "text a cercar" ??s el text que es vol cercar, pot ser una expressi?? regular
        si el par??metre opcional "-regex" s'ha especificat
    "xmldump" ha de ser un fitxer de dump de http://download.wikipedia.org en format xml,
        el que cont?? les versions actuals dels articles ??s: pages-articles.xml.bz2
    -bitacora "fitxer_bit??cora" especifiqueu un fitxer on desar els resultats.
"""

from __future__ import generators
import sys, re, fileinput, xmlreader
import wikipedia, pagegenerators, catlib, config


def main():

    cerca = u''         # text o regex
    regex = False
    diff = False
    nombre = 0
    bitacora = u''

    for arg in sys.argv[1:]:
        arg = wikipedia.argHandler(arg, 'cercador')
        if arg:
            if arg == '-regex':
                regex = True
            elif arg == '-diff':
                diff = True
            elif arg.startswith('-xml'):
                fitxer_xml = arg[5:]
            elif arg.startswith('-bitacora'):
                fitxer_log = arg[10:]
            else:
                cerca = arg

    if (not fitxer_xml) or (not fitxer_log):
        sys.exit ("ERROR:manca fitxer_xml o fitxer_bitacora")

    if regex :
        cerca_re = re.compile(cerca, re.UNICODE)

    bitacora = "Articles que contenen " + cerca + ":\n"

    mysite = wikipedia.getSite()
    dump = xmlreader.XmlDump(fitxer_xml)
    for entry in dump.parse():
        if regex:
            if cerca_re.search(entry.text):
                bitacora = bitacora + entry.title + "\n"
                nombre = nombre + 1
                print entry.title + " ",
        else:
            if entry.text.find(cerca) != -1:
                bitacora = bitacora + entry.title + "\n"
                nombre = nombre + 1
                print entry.title + " ",

    bitacora = bitacora + "----\nNombre d'articles trobats: " + str(nombre)

    bitacora = bitacora.encode('utf-8')

    fitxer_sortida = file ( fitxer_log, 'w' )
    fitxer_sortida.write ( bitacora )
    fitxer_sortida.close ()




if __name__ == "__main__":
    try:
        main()
    finally:
        wikipedia.stopme()