Pavol Janiš - EI, firmy, podľa keyword cez google API, kontaktné údaje

     

    Úvod

    V dnešnej dobe existuje množstvo webových stránok venujúcich sa zhromažďovaniu a poskytovaniu kontaktných údajov o firmách, ktoré poskytujú rôzne služby či produkty. Príkladmi takýchto webových serverov je napríklad portál ifirmy.sk ktorý obsahuje prehľadne kategorizované zoznamy kontaktných údajov o konkrétnych firmách akými sú napríklad telefónne čísla, adresy, mailové konatky a podobne. Princíp pridávania nových údajov do portálu však nie je pomocou samočinných vyhľadávacích robotov alebo indexovaním vyhľadávaných stránok, ale manuálnym registrovaním kontaktných údajov na portáli. Každý môže zaregistrovať firmu a pridať jej konkatné údaje. Týmto sa docieli, že kontaktné údaje sú relatívne korektné a kompletné. 

     

    Iným prístupom k naplneniu bázy dát by bolo prehľadávanie a parsovanie kontaktných údajov z html kódu stránok, ktoré boli označené externým vyhľadávacím strojom ako adekvátne pre používateľa. V mojom projekte som sa teda zameral na podobné prehľadávanie stránok, ktorých web adresa je poskytnutá vyhľadávacím API Googlu na základe vstupných parametrov, ktoré zadá používateľ. Kontaktné údaje sú na základe regulárnych výrazov získavané priamo z HTML kódu stránky a umiestňované do databázy pre prípadné neskoršie použitie. Takýmto spôsobom sa vlastne buduje báza dát na základe vyhľadávacích slov a postupom času sa zmenšuje nutnosť siahať pre informácie do internetu. Výhodou takéhoto riešenia je, že sú pokryté aj firmy, ktoré manuálne nepridávajú svoje kontakty na katalógové portáli, ale len na svoje vlastné weboské stránky firmy.

     

    Popis riešenia

     

    Kompletný systém je riešený ako databázová aplikácia na databáze Oracle. Na databáze sa prakticky vytvára postupne katalóg konaktných údajov na základe kľúčových slov. Rozhranie pre používateľa je riešené ako html frontend do ktorého používateľ vloží vstupné kľúčové slová a systém mu poskytne kontaktné údaje. Systém má dve možnosti ako tieto údaje získa. Ak už na základe rovnakých kľúčových slov prehľadával internet, vyberie kontaktné údaje z databázy a zobrazí ich používateľovi. Pre nové hľadanie systém siaha na internet.

     

    Diagram%d.png

    Postup ziskavania a ukladania kontaktov firiem

    1. Používateľ zavolá cez weboský prehliadač databázu (špecifikovanú linku), ktorá vygeneruje HTML používateľské rozhranie do ktorého používateľ môže zvoliť:

    • Kľúčové slová (narp. konkrétne mesto)
    • Druh vyhľadávanej služby (z číselníka: Maliarske práce, Stavbárske práce..)

    2. Po potvrdení formuláru sa tento začne spracovať storovanými PL/SQL procedúrami. Zavolá sa procedúra CALL_GOOGLE, ktorá najskôr skontroluje, či sa už rovnaké vyhľadávanie nenachádza v databáze (na základe kľúčových slov, druhy služby), ak áno, vráti do obrazovky rovno kontaktné údaje a poskytne možnosť znovu-načítať kontakty z internetu. Ak sa takéto vyhľadávanie ešte neuskutočnilo, vyprázdni sa temporárna tabuľka RESULT, vytvorí sa nové vyhľadávanie (umiestnenie do tabuliek KEYWORDS, SEARCH), vyskladá sa http request (na základe kľúčových slov, sformuluje sa odstránenie neželaných slov z tabuľky BAD_WORDS) a pošle sa GOOGLE serveru. Ten vráti HTML response, z ktorého sa získajú vyhľadané URL adresy a umiestnia sa do tabuľky RESULT.

    3. Zavolá sa procedúra SEARCH_URL, ktorá postupne vyberá URL z tabuľky RESULT, porovnáva ich s tabuľkou BAD_URL (manuálne vytváraná tabuľka s neprehľadávanými substringami URL ) a pošle sa na URL HTTP request. Vráti sa respond v html jazyku, ktorý sa posunie ďalej procedúre SEARCH_PAGE.

    4. Procedúra SEARCH_PAGE prehľadáva html súbor, vyhľadá na stránke slová, ktoré nie sú súčasťou tagov a zoradí ich do tabuľky words. Pomocou regulárnych výrazov označí v tabuľke words slová ktoré by mohli obsahovať telefónne čísla, fax, e-maily a adresy. 

    5. Na obrazovku sa zobrazia označkované slová s tabuľky words spolu s 2 mi predchádzajúcimi a 2 nasledujúcimi slovami.

     

    Nastavenia a inštalácia systému

    Systém je možné modifikovať cez webovský prehliadač, je možné nastaviť nežiadúce slová (napr. aby neprehľadával inzeráty a vyhľadávacie stránky), meniť druhy vyhľadávanej služby a pod. Taktiež je možné resetovať dáta v systéme. 

    Systém je možné nainštalovať na databázu Oracle 10g. Inštalácia je možná aj bez aplikačného servera, napríklad na databázu Oracle XE, na ktorú je cez web rozhranie možné pristupovať pomocou rozhrania APEX. 

    Postup inštalácie:

    - Vytvoriť databázového používateľa 'google'

    - Pod userom SYS spustit instalačný skript, ktorým sa vytvoria potrebné tabuľky, naplnia sa, vytvoria sa baliky a procedúry

     

    Webovské rozhranie

    Do vstupnej obrazovky sa do kolonky klucove slova vložia dodatočné kľúčové slová (ako napríklad Pezinok), zvolí sa typ služby a stlačí sa tlačidlo "Hladaj"

     vstup.png

    Obr. vstupná obrazovka

    Na vystupnej obrazovke sa zobrazia získané výsledky, ružovou sa nachádza URL adresa, odkiaľ boli kontaktné informácie získané a pod ňou sa nachádzajú vyhľadané kontaktné údaje spolu s ich dvomi predchodcami a dvomi nasledovníkmi.

     vysledky.png

    Obr. zobrazenie vysledkov

    Obrazovka s vyhľadanými výsledkami je zbalená aj ako príloha na tejto stránke.

    Regulárne výrazy

    Po získaní zoznamu slov z html kódu nachádzajúcich sa mimo tagov, sa začnú označovať slová, ktoré by mohli byť kontaktnými údajmi, na základ regulárnych výrazov. 

    Ako potenciálne konaktné údaje sa považujú:

    - mobilné telefónne čísla : '09:digit:{2}\/?:digit:{6}'  (čísla začínajúce 09 s ďalšími 2mi číslami, môžu byť oddelené lomítkom a ďalších 6 čísiel)

    - pevné linky: '\+?421:digit:{2,}\/?:digit:{6,}' (čísla, ktoré môžu začínať plusom, nasleduje 421, za ktorým sa očakáva predvoľba s minimálne 2mi číslami, potom môže prísť lomítko a za ním minimálne 6 ďalších číslic)

    - e-mail: ':graph:+\@:graph:+\.sk ' (minimálne jeden tlačiteľný znak, za ktorým prichádza zavináč, po ňom znovu minimálne jeden tlačiteľný znak a na konci reťazec .sk)

    - PSC: ':digit:{5}' (po odstránení medzier musí mať číslo 5 znakov)

    - Ulica a číslo: ':upper::lower:{4,}:digit:+' (Reťazec musí začínať veľkým písmenom za ktorým idú minimálne 4 malé znaky a následne minímálne jedna číslica)

    Ďalej sa označujú ako použiteľné slová, za ktorými by sa mohli potenciálne nachádzať konatkné údaje, teda, slová obsahujúce podreťazce:

    - 'lovens' (ako Slovensko, Slovneská republika, ...), 'dresa' (ako adresa, Adresa), 'mail' (ako e-mail, E-mail, mail, ..), 'elef' (ako Telefon, telefon, telefón,..), 'tel' (ako tel:, tel.číslo, ..), 'fax', 'lic' (ako ulica, ulici, Ulici, ..), 'jdete' (ako nájdete, Nájdete, ..)

    Pôvodne bol do slov zahrnuté aj podslovo 'ontakt', avšak toto slovo sa príliš často nachádza na stránkach ako linka, takže je prakticky nepoužiteľné ako kontaktný údaj.

    Kontaktné informácie sú zo zoznamu slov označované ako správne relativne dobre, avšak, spolu s nimi sa označí aj pomerne veľa slov, ktoré kontaktnými informáciami nie sú. Príkladom slov označených ako správne(vzorka umiestnená v rare):

    Skalica Potenciálne úspešné
    Turčianske Teplice Potenciálne úspešné
    0903458016 Úspešné
    Mobilné telefóny Neúspešné
    Ulice Neúspešné
    Slovensko Potenciálne úspešné
    0905 530 860 Úspešné
    Tomášikova 7 Úspešné
    Slovenský grob Potenciálne úspešné
    900 26 Slovenský Grob Úpsešné

     

    Systém pri zobrazovaní kontaktných údajov vyhľadané slová zoradí za sebou a zobrazí aj dve slová pred a dve slová po označenom výraze. Takýmto spôsobom sa snaží zobraziť aj kontaktné údaje nevyhľadané pomocou regulárnych výrazov, ale nachádzajúce sa vedľa určitých kľúčových slov, ktoré boli tiež označené (potenciálne úspešných). Napríklad sa predpokladá že pred Skalicou by sa mohla nachádzať adresa sídla, taktiež pred Slovensko by sa mohla nachádzať adresa.

     

     

    Popis problémov a ich riešenia

    Problémom systému je pomerne pomalé prehľadávanie získaných html kódov pomocou regulárneho výrazu na vyparsovanie slov. Tento problém je riešený vytvorením kritéria pre maximum vyparsovaných slov z kódu. Rovnako značne spomaľuje systém pomerne veľké množstvo html requestov, ktoré musí databáza vygenerovať na základe získaných URL z Google. Maximum prehľadávaných URL je teda tiež nastavených ako kritérium (max 100 url). Navyše, ak daný server odpovedá pomaly alebo neodpovedá vôbec, čakanie na timeout systém rovnako spomaľuje.  

    Samostatná množina problémov vzniká z dôvodu vracania rôznych katalógových a vyhľadávacích stránok googlom. Ako stránku na parsovanie príde stránka s výsledkami vyhľadávania iného vyhľadávacieho stroja, na ktorej sa síce kľúčové slová nachádzajú, ale žiadne konkrétne hľadané hodnoty. Systém rieši takýto problém neprehľadávaním URL, v ktorých sa nachádzajú podreťazce definované v tabuľke BAD_URL. 

    Zhodnotenie

    - Systém parsuje html stránky pomaly (najmä stránky, ktoré zbytočne veľké, zložité stránky preplnené tagmi)

    - Systém napĺňa aj tabuľku words aj zbytočnými nepoužiteľnými slovami

    - Systém má obmedzenia na počet prehľadávaných výsledkov z google a počet stiahnutých slov z prehľadávanej stránky

     

    + Systém neprehľadáva 2 krát web na základe rovnakých kľúčových slov

    + Systém za pomoci predchodcov a následníkov objavuje kontaktné údaje, ktoré nepokryjú regulárne výrazy

    + Systém indexuje konkrétne vyhľadávania do tabuliek databázy pre ďaľšie použitie

     

    Tag page (Edit tags)
    • No tags
    You must login to post a comment.
    Powered by MindTouch Core