• Nenhum resultado encontrado

ICE-B. 9 - Internet. Ludwig Krippahl

N/A
N/A
Protected

Academic year: 2021

Share "ICE-B. 9 - Internet. Ludwig Krippahl"

Copied!
45
0
0

Texto

(1)

ICE-B

9 - Internet

(2)

Internet

Resumo

■ Introdução às redes de computadores e à Internet

■ Obtenção de dados da Internet usando Python

(3)

2

Internet

(4)

Redes

Uma rede permite partilhar recuros e informação

■ Infraestrutura de troca de

mensagens

■ Liga computadores para

trocar informação e partilhar recursos

■ E.g. Pesquisa no Google:

• Enviamos a pergunta

• Usamos os servidores

• Obtemos o resultado

(5)

4

Redes

Transferência entre dois computadores

■ Emissor: produz e envia uma mensagem (sequência de bytes)

■ Receptor: recebe a sequência de bytes

■ Rede: infraestrutura que inclui:

• Meios de ligação (cabos, fibra óptica, radio, satélite)

• Computadores dedicados a encaminhar a mensagem

Rede de computadores

(6)

Redes

Rede local (LAN, Local Area Network)

■ Os computadores estão ligados directamente

• cada um pode enviar bytes directamente a qualquer outro.

■ Distância entre computadores tipicamente menor que 1km.

Rede de larga escala (WAN, Wide Area Network)

■ Emissor e o destinatário estão em redes locais distintas

■ É preciso encaminhar os bytes por equipamento especializado

(routers e gateways) que escolhem o caminho até ao destino final • Router gere ligação entre computadores numa rede ou redes do mesmo tipo

(7)

6

Redes

Mensagens em pacotes

■ Para chegar ao destinatário, a mensagem é enviada em pacotes

endereçados

• Cada computador tem o seu endereço, normalmente da rede local

■ Os pacotes são encaminhados individualmente pela rede da origem

até ao destino

• Pela rede de larga escala são reencaminhados entre routers e gateways

• O router final encaminha os pacotes para o computador destinatário

(8)

Redes

Interligação de redes

(9)

8

Internet

Rede de redes locais com protocolos próprios

■ Todos os computadores têm um endereço IP (Internet Protocol)

■ Se dentro da LAN o router envia o pacote directamente

■ Se estiver noutra LAN, terá de passar por vários routers

• Tipicamente, a LAN tem apenas um endereço para o exterior

• O router tem de traduzir os endereços (NAT, Network Address Translation)

(10)

Internet

Protocolos da Internet

■ Nível físico

• Sinais entre os nós da rede

• Modulação e conversão: fibra óptica, telefone, cabo

• Transmissão ao nível do bit (0 ou 1)

(11)

10

Internet

Protocolos da Internet

■ Nível físico

■ Nível de ligação

• Transmissão de conjuntos de bits entre nós da rede

• Correcção de erros, gestão de filas de espera, ...

(12)

Internet

Protocolos da Internet

■ Nível físico

■ Nível de ligação

■ Nível IP (Internet Protocol)

• Gere os pacotes de bytes, endereçamento e reencaminhamento

• A informação é dividida em pacotes (sequências de bytes), encaminhados individualmente ao destino.

• Cada máquina tem um endereço e cada pacote tem o endereço do destinatário

• IPv4 (1983): 4 bytes (32 bits), normalmente repetido em redes locais porque só permite 400 milhões de endereços únicos

• e.g. 127.0.0.1 é o próprio computador, 192.168.1.1 costuma ser o router

(13)

12

Internet

Protocolos da Internet

■ Nível físico

■ Nível de ligação

■ Nível IP (Internet Protocol)

■ Nível de transporte (TCP).

• Transmission Control Protocol

(14)

Internet

Protocolos da Internet

■ Nível físico

■ Nível de ligação

■ Nível IP (Internet Protocol)

■ Nível de transporte (TCP).

■ Nível da aplicação

• Protocolos destinados a gerir a comunicação entre aplicações ou com o utilizador.

(15)

14

Internet

(16)

Internet

Protocolos da Internet

■ Normalmente não usamos os endereços IP

■ Em vez disso, usamos endereços simbólicos associados:

• e.g. www.google.com

■ O DNS (Domain Name System) é um sistema hierárquico de

servidores que mapeia os endereços simbólicos em endereços IP • Nomes genéricos de domínio: com biz edu info gov mil

• Nomes de domínio de países: pt au us de fr

(17)

16

Internet

Protocolos da Internet: DNS

(18)

Internet

Protocolos da Internet: DNS

■ Sistema hierárquico de servidores que mapeia os endereços

simbólicos em endereços IP

(19)

18

Internet

Protocolos da Internet: DNS

■ Em Março 2015 um memorando de entendimento entre ISP, IGAC

e SGC passou a permitir "bloquear" sites que os envolvidos considerem piratas.

■ Mas apenas configuram os servidores DNS para não resolver os

nomes desses sites

■ Assim, o “bloqueio” pode ser facilmente contornado usando outro

servidor DNS

• E.g. Google: 8.8.8.8, Open DNS: 208.67.222.222

■ A natureza distribuida da Internet e o uso de multiplos níveis de

protocolos torna-a muito robusta e versátil

(20)

Internet

Isto permitiu o enorme crescimento da Internet

■ Cerca de 50% das pessoas no mundo têm ligação à Internet

(21)

20

Internet

(22)

Internet

(23)

22

WWW

A WWW é uma rede montada sobre a Internet

■ 1989: Tim Berners-Lee (CERN) escreve proposta para sistema

distribuído de hiper-texto

• Ligar uma “web of notes with links” para ajudar os físicos do CERN a partilhar informação em grandes projectos.

■ 1990: Cria um browser com interface gráfica.

Componentes da World Wide Web:

■ Web, "teia" de documentos interligados e sofware para os gerir.

■ Potocolos de aplicação que gerem a partilha da informação.

■ Página Web: documento, normalmente ligado a outros

documentos.

(24)

WWW

A WWW é uma rede montada sobre a Internet

■ Site web: Conjunto de páginas Web relacionadas.

• Normalmente guardadas na mesma máquina, mas também podem estar distribuídas na "cloud"

■ Servidor Web - servidor

• Programa que responde a

pedidos de acesso às páginas Web.

■ Browser Web - cliente

• Ferramenta que pede páginas Web e as mostra.

(25)

24

WWW

A WWW é uma rede montada sobre a Internet

■ Três elementos centrais da World Wide Web:

• Uniform Resource Locator (URL)

• HTML: linguagem das páginas Web

• HTTP / HTTPS: Hypertext Transfer Protocol (Secure), sobre TCP/IP

■ URL: especifica a localização de um recurso.

(26)

WWW

Hypertext Markup Language (HTML)

■ Linguagem usada para criar páginas Web.

(27)

26

WWW

Hypertext Markup Language (HTML)

■ Tags (marcas): Colocadas entre os símbolos < e >

■ A marca final distingue-se da inicial pela </..>

■ Elementos são definidos por uma marca inicial e final

• e.g. <TITLE>Título</TITLE>

<h3> Hypertext Markup Language (HTML)</h3>

<ul><li>Tags (marcas): Colocadas entre os símbolos < e ></li> <li>A marca final distingue-se da inicial pela </..></li>

<li>Elementos são definidos por uma marca inicial e final</li> <ul><li>e.g. <code><TITLE>Título</TITLE></code></li>

(28)

WWW

(29)

28

WWW

Hypertext Transfer Protocol, status codes

■ 200 OK

■ 403 Forbidden

■ 404 Not Found

■ 451 Unavailable For Legal Reasons

• Referência a Fahrenheit 451, Ray Bradbury

■ 500 Internal Server Error

■ 503 Service Unavailable

■ Ver mais em:

(30)

Internet

(31)

30

Dados remotos

■ Exemplo: Quantos prémios Nobel da Química por país?

(32)

Dados remotos

■ Exemplo: Quantos prémios Nobel da Química por país?

...

<table class="wikitable sortable"> <tr> <th>Year</th> <th colspan="2">Laureate</th> <th>Country</th> <th>Rationale</th> </tr> <tr> <td>1901</td>

<td><a href="/wiki/File:Vant_Hoff.jpg" class="image">...

<td><a href="/wiki/Jacobus_Henricus_van_%27t_Hoff" ...

<td><span class="flagicon"><img alt="" src="...""> </span>

<a href="/wiki/Netherlands" title="Netherlands">Netherlands</a></td> <td>[for his] discovery of the laws of <a href="/wiki/Chemical_dynamics"...

</tr> <tr>

<td>1902</td>

...

(33)

32

Dados remotos

■ Exemplo: Quantos prémios Nobel da Química por país?

■ Células entre <td> e </td>

■ A que começa por <span class="flagicon" é a do país

■ O país está a seguir ao quarto > dentro da célula

...

<table class="wikitable sortable">

...

<td>1901</td>

<td><a href="/wiki/File:Vant_Hoff.jpg" class="image">...

<td><a href="/wiki/Jacobus_Henricus_van_%27t_Hoff" ...

<td><span class="flagicon"><img alt="" src="...""> </span>

<a href="/wiki/Netherlands" title="Netherlands">Netherlands</a></td> <td>[for his] discovery of the laws of <a href="/wiki/Chemical_dynamics"...

(34)

Dados remotos

Plano do programa:

■ Obter o código fonte da página HTML da Wikipedia

■ Extraír todos os países de todos os laureados

■ Obter daí lista, alfabética, dos países com premiados

■ Contar para cada país quantos laureados teve

(35)

34

Dados remotos

Em Python é fácil usar HTTP

■ O módulo requests tem uma interface HTTP/HTTPS

■ Podemos obter facilmente o código fonte da página:

In : import requests

In : r = requests.get('https://...Nobel_laureates_in_Chemistry') In : r.text

Out: '<!DOCTYPE html>\n<html class="client-nojs" lang="en" dir="ltr">\n<head>\n<meta charset="UTF-8"/>\n<title>

List of Nobel laureates in Chemistry - Wikipedia</title>\n <script>document.documentElement.className =

...''

■ Este objecto do tipo Response tem outros atributos úteis:

In : r.ok Out: True

(36)

Dados remotos

■ Extraír países da tabela

• Células entre <td> e </td>

• A que começa por <span class="flagicon" é a do país

• O país está a seguir ao quarto > dentro da célula

def all_countries(html):

"""Return list of all countries in Wikipedia Nobel html table"""

cells = html.split('<td>') countries = []

for cell in cells:

if cell.startswith('<span class="flagicon"'):

countries.append(cell.split('>')[4].split('<')[0]) return countries

<td><a href="/wiki/File:Vant_Hoff.jpg" class="image">...

<td><a href="/wiki/Jacobus_Henricus_van_%27t_Hoff" ...

<td><span class="flagicon"><img alt="" src="...""> </span>

(37)

36

Dados remotos

■ Testamos o código, confirmando que temos todos os países

def all_countries(html):

"""Return list of all countries in Wikipedia Nobel html table"""

table = html.split('<table class="wikitable sortable">')[1] table.split('</table>')[0]

cells = table.split('<td>') countries = []

for cell in cells:

if cell.startswith('<span class="flagicon"'):

countries.append(cell.split('>')[4].split('<')[0]) return countries

In : r = requests.get('https://...Nobel_laureates_in_Chemistry') In : countries = all_countries(r.text)

Out: ['Netherlands', 'Germany', 'Sweden', 'United Kingdom', 'Germany', 'France'

'Germany', 'United Kingdom', 'Germany', 'Germany', 'Poland', 'France', 'France', 'Switzerland', 'United States', 'Germany', 'Germany', 'Germany'

(38)

Dados remotos

■ Países diferentes, por ordem alfabética

• Basta usar o sort da lista, que ordena a lista

def unique_countries(countries):

"""Return unique countries in list, sorted alphabetically"""

unique = [] for c in countries: if c not in unique: unique.append(c) unique.sort() return unique In : names = unique_countries(countries)

Out: ['Argentina', 'Australia', 'Austria', 'Belgium', 'Canada', 'Croatia', 'Czechoslovakia', 'Denmark', 'Finland', 'France', 'Germany', 'Israel', 'Italy', 'Japan', 'Mexico', 'Netherlands', 'Norway', 'Poland',

(39)

38

Dados remotos

■ Contar quantas vezes ocorre cada país

• Começamos com uma lista a zeros, vamos somando no sítio certo

def count_per_category(values, categories):

"""Return number of occurrences of each category in values"""

(40)

Dados remotos

■ Laureados por país, juntar tudo

def laurates_per_country(url):

"""Returns string with laureates per country from wiki page"""

r = requests.get(url) if not r.ok:

return 'Error getting data'

countries = all_countries(r.text) names = unique_countries(countries)

counts = count_per_category(countries,names) table = ''

for ix in range(len(names)):

table = table + names[ix] +'\t'+str(counts[ix])+'\n'

return table

In : chemistry = laurates_per_country('https://...Nobel_laureates_in_Chemistry'

In : print(chemistry) Argentina 1 Australia 1 ...

(41)

40

Dados remotos

■ Como estas páginas têm o mesmo formato, funciona com outras:

(42)

Dados remotos

■ Como estas páginas têm o mesmo formato, funciona com outras:

(43)

42

Internet

(44)

Internet

Resumo

■ Internet: rede de redes de computadores

• Diferentes níveis de protocolos "empilhados" permitem abstraír dos detalhes

■ World Wide Web: rede de documentos

• Construída sobre a Internet (URL, HTTP, HTML)

■ Acesso a recursos na WWW, tipicamente em HTML

• Módulo requests

• Processar html (processar strigs)

Leitura adicional:

■ Recomendada: Capítulo 9 dos apontamentos

(45)

Referências

Documentos relacionados

Em caso de fraude comprovada, o conto será excluído da antologia, mesmo depois de sua publicação – o autor não poderá mais participar dos projetos da DELIRIUM

mas, caso não se sinta preparado, nem tente fazer isso...o nosso corpo astral sente de maneira muito mais intensa preparado, nem tente fazer isso...o nosso corpo astral sente de

Dentro deste contexto, este trabalho visa utilizar o modelo clássico do problema do menor caminho, para otimizar uma rota utilizada semanalmente por uma empresa para efetuar

[...] existem outras vias na afirmação do determinismo em geografia, sem que elas estejam necessariamente ligadas à questão homem- meio. Ao mesmo tempo, importa reconhecer a

1 Projeto de Pesquisa desenvolvido em sala de aula pelo 3º ano do Ensino Fundamental do Centro de Educação Básica.. Francisco

Toxicidade para órgãos-alvo específicos - exposição única: Mistura não é classificada para este perigo Toxicidade para órgãos-alvo específicos - exposição repetida: A

As dificuldades de controle de qualidade das preparações fitoterápicas utilizadas, a ausência de comprovações científicas de eficácia e segurança das plantas medicinais e

Nesta tese de doutorado o autor anali- sa criticamente a história e a historio- grafia da arqueologia pantaneira, des- de a segunda metade do século XIX até fins do século XX, e