Jakub Jedelský
V poslední době si "hraju" s Pythonem a mám rozpracované
některé programy, vyžadující data z webu. Pro tuto práci jsem si oblíbil
knihovnu urllib2, která nabízí požadovanou funkčnost (je vlastně
nějaká jiná?). Dosud jsem používal jednoduché stažení dat z webu pomocí
urllib2.urlopen(url), ale co když je třeba svoji aplikaci nějak
identifikovat?
K identifikaci klienta připojujícího se pomocí protokolu HTTP (nejen)
slouží hlavička User-Agent, která označuje program a verzi (+ může
další info). V pythonní knihovně urllib2 to lze řešit pomocí třídy
Request a funkce add_header(). Viz následující kód:
>>> import urllib2
>>> request = urllib2.Request('http://dev.stderr.cz/')
>>> request.add_header('User-Agent','MujSkvelyProgram/0.1')
>>> opener = urllib2.build_opener()
>>> data = opener.open(request).read()
Jedinou změna oproti urllib2.urlopen(url) je "rozkrokování" neboli
vytvoření samotného dotazu (request), přidání hlavičky a zpracování
pomocí openeru ("otvíráku"?). Pomocí openeru můžete dále zpracovávat
výjimky, přesměrování a chyby.