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.