Scrapping stránek prakticky: Dívka dne na TN.cz

napsal admin

September, 2008

Naposledy upraveno: 20.September, 2008

Obsah:

Kdo se alespoň trochu zajímá o webové dění, tvoření MFA stránek a podobných „neužitečnostech“, tak jste určitě o scrappingu stránek slyšeli. Jedná se o dolování (mining) pro nás užitečných informací z již existujících stránek.

Samozřejmě, někdy se jedná o hotovou vědu, hlavně když jsou potřebné informace uložené v dost prasáckém nestrukturovaném složení.Ale my jsme šikovní kluci od bobří řeky a na všechno máme odpověď.

Praktický příklad scrapping-u v Python-u

V tomto článku si ukážeme, jak prakticky provádět scrapping v Python-u. Vše co k tomu budeme potřebovat je defaultní instalace Python a mou oblíbenou parsovací knihovnu BeautifulSoup (dokumentace zde), na prvotní analýzu HTML kódu Firefox s pluginem Firebug.

Úkol zní jasně: vybrakovat všechny obrázky Dívek dne ze stránky TN.cz.

Galerie Dívka Dne (TN.cz)

Galerie Dívka Dne (TN.cz)

Analýza galerie Dívky dne

Ještě prvně než se pustíme do psaní kódu si stránku pořádně prohlídneme a zanalyzujeme. Přikládám screenshot z obrazovky galerie (červeným je to co nás bude zajímat):

Analýza galerie Dívky dne

Analýza galerie Dívky dne

Číslami jsou označeny odkazy (v HTML kódu je to tag A) na konkrétní galerií. Na každé stránce je pět odkazů na samostatné galerie, pro dalších pět musíme kliknout na link „další“. Stránek je celkem 30 co je zhruba 150 galerií a v každé z nich 6 obrázků.

Krok 1: zjištění URL adres všech stránek s galeriemi

V prvním kroku si zjistíme všechny URL adresy kde se nachází galerie. Začneme tedy od nejnovější galerie, zjistíme všech 5 odkazů na jednotlivé galerie a pak následujeme link označen „další“ a postup opakujeme. Konec prolézání zjistíme, ak žádný link s anchor textem „další“ se na stránce nenachází.

Výňatek kódu v Pythone, který používa BeautifulSoup na rozparsování odkazu „další“:

soup.find('div', {'class':'main_page_navigator_navigation'}).find(lambda tag: tag.name == 'a' and tag.contents[0] == u'další')

V skratke: najdeme tag <div class=“ main_page_navigator_navigation“> a v něm tag a, který obsahuje text „další“ (všimněte si, že do funkce

find()

můžeme dát jak název tagu který hledáme nebo rovnou funkci).

Další částí skládanky je rozparsování všech odkazů na galerie (na obrázku 2 označená číslicemi 1 až 5):

soup.find( 'ul', {'class':'galery_2'} ).findAll(lambda tag: tag.name == 'a'  and u'Dívka dne' in tag.contents[0] )

Táhle část kódu nám vráti všechny odkazy na galerie, samotný odkaz uloží BeautifulSoup v atributu „href“.

Krok 2: získání jednotlivých obrázků z galerie

Takže máme všechny URL na jednotlivé galerie, nyní nám už chybí jenom samotné rozparsování galerie a získání všech obrázků. Není nic jednoduššího:

soup.find('div', {'id':'red_section_girl_of_the_day_photogallery'}).findAll('img')

Tenhle kód nám z tagu <div id=“ red_section_girl_of_the_day_photogallery“> vrátí všechny obrázky. Samotný odkaz na obrázek je pochopitelně v atributu „src“.

Závěrem anebo na co je to vůbec dobrý?

Zde představený příklad představuje standardní postup v scrapování běžné stránky: rozparsovat jednotlivé podstránky a z podstránek získat potřebné informace ( v případě dívky dne na TN.cz obrázky nahých slečen).

Na co je scrapování dobrý? V prvním řadě na získání informací ke vlastnímu, leckdy nekalému prospěchu (můžeme si scrapper dát do cronu, spojit z databází a postavit si vlastní zdroj RSS z jakékoliv stránky, získávat data na vlastní MFA weby, možnosti jsou neomezené, záleží jenom na fantazií).

Python se svou bohatou standardní knihovnou a rozšířením BeautifulSoup značně ulehčuje práci a programování scrapera bývá i často zábava…

V příštích dílech si můžeme něco povykládat o báječném rozšíření Pythonu a jak nám může řádově zrychlyt scrapování a využít naplno síťovou linku a naše zahálející multijádrové procesory.

Pro celý článek a zdrojové kódy k příkladu si stáhněte článek ve formátu PDF (~230 kB)

Líbil se vám článek a chcete vědět víc? Pak se přihlaste k odebírání novinek pomocí RSS a/anebo zanechte komentář, budu se těšit!

pridej.cz

[Kategorie: Programování, Python] [TrackBack URL] [RSS] [RSS(Komentáře)]


Komentáře

  1. скачать песню оп эроина русская версия 23.November, 2017 napsal:

    Excellent web site you’ve got here.. It’s difficult
    to find quality writing like yours these days. I
    honestly appreciate people like you! Take care!!

Přidej komentář


© 2008 Kiwwisk na internetu píše Andrej Kesely | Další odkazy: slevy v českých obchodech