WWW

World Wide Web este totalitatea siturilor / documentelor și informaților de tip hipertext legate între ele, care pot fi accesate prin rețeaua mondială de Internet. Webul a fost inventat în 1989 la Centrul European de Cercetări Nucleare (CERN) din Geneva, Elveția, la propunerea lui Tim Berners-Lee de creare a unei colecții de documente având legături între ele, ca soluție la problemele de comunicare pe care le întâmpinau echipele de cercetători ce foloseau centrul. Berners-Lee și echipa sa au realizat primele versiuni pentru patru componente cheie necesare serviciului web, și anume:

  • protocolul de comunicație HTTP;
  • limbajul de descriere HTML;
  • serverul web;
  • browserul.

URL

Documentele, care rezidă în diferite locații pe diverse calculatoare server, pot fi regăsite cu ajutorul unui identificator univoc numit URL (Uniform Resource Locator). Sintaxa unui URL este următoarea:

http://example.com:8042/over/there?name=ferret#nose
\__/   \_________/ \__/ \________/ \_________/ \__/
  |         |        |      |           |        |
protocol  domeniu   port   cale    interogare  fragment

HTTP

Protocolul HTTP este un protocol de tip text prin care serverul web și browserul clientului (utilizatorului) comunică între ele, fiind protocolul “implicit” al WWW. Adică, dacă un URL nu conține partea de protocol, aceasta se consideră ca fiind http. HTTP presupune că pe calculatorul destinație rulează un program care înțelege protocolul. Fișierul trimis la destinație poate fi un document HTML (abreviație de la HyperText Markup Language), un fișier grafic, de sunet, animație sau video.

Metodele protocolului HTTP:

  • GET: este cea mai folosită metodă, fiind utilizată pentru interogări.
  • HEAD: se comportă exact ca metoda GET, dar serverul returnează doar antetul resursei, ceea ce permite clientului să inspecteze antetul resursei, fără a fi nevoit să obțină și corpul resursei.
  • PUT: metoda este folosită modificarea unei resurse existente.
  • POST: a fost proiectată pentru a trimite date de intrare către server.
  • DELETE: șterge toate reprezentările resurse din URL.
  • TRACE: este o metodă folosită de obicei pentru diagnosticare, putând da mai multe informații despre traseul urmat de legătura HTTP.
  • OPTIONS: este folosită pentru identificarea capacităților serverului Web, înainte de a face o cerere.
  • CONNECT: este o metodă folosită în general de serverele intermediare.

Coduri de răspuns HTTP:

  • 1xx - erori informaționale: indică un răspuns provizoriu al serverului și conține numai linia de răspuns sau alte aplicații opționale.
  • 2xx - răspuns reușit: indică utilizatorului că cererea a fost primită, înțeleasă și acceptată cu succes.
  • 3xx - redirectări: indică faptul că acțiunile următoare vor trebui făcute de browser pentru a putea fi îndeplinită cererea.
  • 4xx - erori ale utilizatorilor: folosit în cazurile în care utilizatorul greșește formularea cererii.
  • 5xx - erori de server: indică cazurile în care serverul e conștient de greșelile produse sau e incapabil să execute cererea.

pip

pip este un sistem de management al pachetelor folosit pentru instalarea pachetelor scrise în Python. Multe dintre acestea se regăsesc în Python Package Index (PyPI).

Utilizare

  • Instalare pachete:
pip install some-package-name
  • Dezinstalare pachete:
pip uninstall some-package-name
  • Pentru lista completă a opțiunilor:
pip --help

requests

requests este o bibliotecă Python pentru realizarea de cereri HTTP într-un mod simplu și elegant.

Exemplu utilizare:

>>> import requests
>>> resp = requests.get('http://purepython.eaudeweb.ro')
>>> resp.status_code
200
>>> resp.headers['Content-Type']
'text/html; charset=utf-8'
>>> resp.text
u'<!doctype html>\n<html lang="en">...'

BeautifulSoup

BeautifulSoup este o bibliotecă externă folosită pentru extragerea datelor din HTML și XML. Aceasta face traversarea documentului și regăsirea elementelor mai ușoară.

Exemplu (pornind de la resp de mai sus):

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup(resp.text, "html.parser")
>>> len(soup.find_all('a'))  # number of anchors
27
>>> soup.body.h1.text
u'Python & Django 2016'