poprzedni temat | w górę | następny temat

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

  1. 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łu urllib.

  2. 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.

  3. 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.

  4. 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łu json, aby parsować zwracany wynik.

  5. 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.

  6. Rozwiąż powyższe zadania przy użyciu modułu requests.

poprzedni temat | w górę | następny temat