Demo crawler
HackForum
| Zdravim snazim sa napisat si maly crawler prist na to ako to funguje ale nedary sa mi to. Chcel by som pozbierat vsetky mesta a obce s [link] ale vobec netusim ako "vytiahnut " kompletny zoznam Ak by ma dakto posunul dalej ako na to idealne pomocov php budem viac ako vdacni a o vysledny svojho snazenia sa podelim.
Dakujem za pomoc (odpovědět) | It Bus | 178.40.43.* | 21.3.2013 21:59 |
|
|
|
| Nechce se mi to vysvětlovat, proto rovnou předkládám rychlokód. Měl by snad fungovat. Pokud ne, uprav si ho dle potřeby sám.
Ideální by bylo asi použít nějakou knihovnu na zpracování HTML, ale nad tím se mi nechtělo sedět, takže jsem zvolil cestu zla :)
[link]
----------
Sec-Cave.cz - [link] (odpovědět) | |
|
|
| Prvne potrebujes stahnout kompletni HTML kod teto stranky. V PHP i Pythonu je to zalezitost nekolika radek.
Ted se musis podivat na strukturu toho HTML. Seznam je razeny abecedne a ke kazdemu pismenu je vzdy samostatna tabulka. Pred tabulkou se vzdy nachazi tento radek:
<h2><span class="editsection">[<a href="/w/index.php?title=Zoznam_slovensk%C3 %BDch_miest,_obc%C3%AD_a_vojensk%C3%BDch_ob vodov&action=edit&section=1 " title="Upraviť sekciu: A">upraviť</a>]</span> <span class="mw-headline" id="A">A</span></h2>
Je vsude stejny. Jedine, co se meni, jsou pismena ("A", "B", ...) a cislo sekce (1, 2, ...). Zacatek (prvnich nekolik desitek znaku) je nicmene vsude stejny. To je fajn, bude se to hodit.
Za nadpisem se nachazi kod ohraniceny <tr> a </tr>, ktery lze preskocit. Nasleduje dalsi <tr>, kde se hned na nasledujicim radku nachazi tag <td>. Z toho lze vyparsovat nazev obce. Po ukoncovacim </tr> zacina novy par techto tagu, kde je situace uplne stejna.
Konec sekce ("A", "B", ...) naleznes diky tagu </table>, kterym tato sekce konci. Pote tagem <h2> opet zacina nova.
Takze abys to naprogramoval, potrebujes cca toto:
1) Nacist si do nejake promenne ten HTML kod
2) Najit zacatek sekce (ten <h2>)
3) Preskocit prvni par <tr></tr>
4) Po nasledujicim <tr> precist prvni radek <td> a vyparsovat z nej nazev obce (tzn. odstranit vsechny HTML tagy, nic vic).
5) Skocit na dalsich <tr> a opakovat tak dlouho, dokud se nedostanes k tagu </table>
6) Opakovat od bodu 2 dokud nerozparsujes celou stranku (odpovědět) | |
|
|
| Zasrany naspeedovany gumovy kachny na koksu, nez clovek napise prispevek, poslou kod :D (odpovědět) | |
|
|
| Indy, právě proto jsem psal, že se mi to nechce popisovat :D Sepsat návod je mnohdy mnohem jednodušší a pro čtenáře srozumitelnější ;)
----------
Sec-Cave.cz - [link] (odpovědět) | |
|
|