
18
Jak na překlad zkrácených URL adres (bit.ly a další)
Těchto „zkracovačů“ existuje celá řada, například bit.ly nebo také googlovský goo.gl. Nedávno jsem u jednoho skriptu v Pythonu řešil nutnost překladu takových adres, což jsem dělal zhruba takto:
1 2 3 4 | ... ext_web = urllib2.urlopen(odkaz['href']) #načte web url = ext_web.geturl() #uloží jeho adresu ... |
Vypadá to jednoduše, v praxi je to však při větším počtu vstupních dat nepoužitelné, protože načtení stránky a získání adresy trvalo příliš dlouho. V průměru 15-20 sekund na jednu adresu. Což při 200 000 vstupních adresách chvilku trvá.
Naštěstí jsem narazil na webovou službu, která umožňuje velmi rychlý překlad zkrácený URL adres. Jedná se o web unshort.me. K našemu účelu by se dala využít i hlavní stránka s formulářem, pro strojové zpracování je však k dispozici také API. Její použití je jednoduché, stačí otevřít odkaz v tomto tvaru http://api.unshort.me/?r=urladresa&t=typvracenychdat. Takže v praxi například http://api.unshort.me/?r=http://bit.ly/defcon&t=xml (to je sranda, dívejte jakou adresu mi bit.ly vytvořil :-) Defcon). Výsledek překladu bude vrácen v XML formátu, přikládám dvě ukázky zpracování, jak v PHP, tak v Pythonu.
1 2 3 4 5 6 7 | <?php $adresa = "http://bit.ly/defcon"; $typ = "xml"; $xml = simplexml_load_file("http://api.unshort.me/?r=".$adresa."&t=".$typ); echo $xml->requestedURL." ".$xml->resolvedURL; ?> |
1 2 3 4 5 6 7 8 9 | import urllib2 from BeautifulSoup import BeautifulStoneSoup #BSS se pouziva ke zpracovani XML adresa = "http://bit.ly/defcon" typ = "xml" stranka = urllib2.urlopen("http://api.unshort.me/?r=" + adresa + "&t=" + typ) xml = BeautifulStoneSoup(stranka) print xml.requestedurl.text, xml.resolvedurl.text #muzeme snadno prochazet strukturu XML |
Je dobré, že si API dokáže poradit i s nezkrácenými adresami, pokud tedy zkusíte přeložit adresu seitler.cz, nečeká na vás žádná chyba, ale jednoduše opět seitler.cz. A jak rychle vlastně překlad probíhá? Za sekundu se stihnou přeložit zhruba dvě adresy. A co se skrývá pod tajemným přeloženým odkazem???
EDIT: Svým článkem jsem vyprovokoval svého kamaráda Brana k tomu, aby napsal své vlastní řešení tohoto problému. Na výsledek jeho snahy se můžete podívat zde. Který přístup hodnotíte lépe a jaké jsou přednosti a zápory obou skriptů?

Čti dál:
2 komentářů k “Jak na překlad zkrácených URL adres (bit.ly a další)”
Odpověď na Paulie
O mně
kategorie
SSME FI MUNI
FIT VUT
Odkazy
Kupte si odkaz! PR 3, SR 2
Kupte si odkaz! PR 3, SR 2
Kupte si odkaz! PR 3, SR 2
TAGS
Nejčtenější články
- 7 tipů Jak spát méně a efektivněji - 159 999 views
- První semestr na FIT VUT - 86 077 views
- TEST: Kolik spánku je denně potřeba? - 50 942 views
- Jak v PHP nahradit zastaralé funkce ereg a eregi - 49 307 views
- 7 tipů jak si usnadnit a urychlit práci s HTML a CSS - 43 302 views
- Třetí semestr na FIT VUT - 39 618 views
- Čtvrtý semestr na FIT VUT - 37 718 views
- Druhý semestr na FIT VUT - 34 323 views
- 9 nečekaně jednoduchých technik, které z vás udělají mistra komunikace - 31 899 views
- Trend: poplatky za osobní odběr zboží. Bude hůř? - 29 602 views
Nejnovější komentáře
- 5 nových tipů pro lepší spánek « Milan Seitler u 7 tipů Jak spát méně a efektivněji
- 5 nových tipů pro lepší spánek « Milan Seitler u TEST: Je možné spát 6 hodin denně? Tak určitě!
- David u 9 nečekaně jednoduchých technik, které z vás udělají mistra komunikace
- Petr u Bakalářské studium na FIT VUT
- Martin u Jak v PHP nahradit zastaralé funkce ereg a eregi
archiv
- Prosinec 2018
- Listopad 2015
- Září 2015
- Březen 2015
- Květen 2014
- Duben 2014
- Prosinec 2013
- Listopad 2013
- Červenec 2013
- Červen 2013
- Duben 2013
- Březen 2013
- Únor 2013
- Leden 2013
- Prosinec 2012
- Listopad 2012
- Říjen 2012
- Září 2012
- Srpen 2012
- Červenec 2012
- Červen 2012
- Květen 2012
- Březen 2012
- Únor 2012
- Leden 2012
- Listopad 2011
- Říjen 2011
- Srpen 2011
- Červen 2011
- Duben 2011
- Únor 2011
- Leden 2011
Ahoj.
Něco podobného jsem potkal při toulkách po netu tady ;-)
http://net.tutsplus.com/tutorials/ruby/how-to-build-a-shortlink-app-with-ruby-and-redis/
díky za tip, ruby musím taky někdy vyzkoušet :)