Obsługa protokołu HTTP
Do pobierania dokumentów za pomocą protokołu HTTP
dostępnych jest kilka modułów.
Jednym z nich jest urllib
.
import urllib import re url = 'http://hasthelargehadroncolliderdestroyedtheworldyet.com/' regex = re.compile(r'<noscript>(?P<answear>.+)</noscript>') # document to napis document = urllib.urlopen(url).read() # szukamy w pobranym tekście wystąpienie wzorca regex.search(document).groupdict() {'answear': 'NOPE.'}
Zadania
-
Napisz funkcję, która dostaje jako parametry: url dokumentu (napis) oraz słownik argumentów i zwraca pełny adres zapytania. Na przykład dla url równego
"https://www.youtube.com/watch"
i słownika argumentów{'v': 'dQw4w9WgXcQ', 'fullscreen': 'yes_or_no'}
funkcja ma zwrócić napis'https://www.youtube.com/watch?v=dQw4w9WgXcQ&fullscreen=yes_or_no'
. Podpowiedź: użyj odpowiedniej funkcji z modułuurllib
. -
Napisz program, który zapisuje na dysku dokument o podanym jako parametr wywołania adresie url. Użyj niestandardowego, wymyślonego przez siebie nagłówka
User-Agent
. -
Korzystając z serwisu yr.no napisz program, który wyświetli godzinę wschodu słońca w wybranej miejscowości. Przykład: adres dla Lublina.
-
Napisz funkcję, która przyjmuje adres w postaci napisu, np.
'Akademicka 9, Lublin'
i zwraca parę współrzędnych geograficznych podanego adresu. Funkcja powinna używać serwisu nominatim, np. dla podanego adresu "Akademicka 9, Lublin". Podpowiedź: użyj modułujson
, aby parsować zwracany wynik. -
Korzystając z funkcji z poprzedniego zadania napisz funkcję, która przyjmuje listę adresów (napisów) i zwraca sumaryczną długość drogi od pierwszego adresu do drugiego, potem trzeciego itd. aż do ostatniego. Każdy odcinek między poszczególnymi adresami ma być najkrótszym możliwym po powierzchni Ziemi (przyjmujemy, że jest ona kulą), czyli ortodromą.
Spróbuj wykorzystać moduł
urllib3
, aby zapytania do serwisu odbywały się przy użyciu tego samego połączenia HTTP. -
Rozwiąż powyższe zadania przy użyciu modułu
requests
.