Primeiras aulas do curso String em Python: extraindo informações de uma URL

String em Python: extraindo informações de uma URL

Introdução e fatiamento de strings - Apresentação

Meu nome é Gabriel Saldanha e eu vou te acompanhar nesse curso, onde vamos falar sobre manipulação de strings no Python.

Manipular uma string é você aplicar alguma operação a uma string, ou seja, a um texto, para conseguir extrair desse texto alguma informação relevante para a sua aplicação. Vamos ver um exemplo?

Aqui eu estou na página alura.com.br, se eu fizer uma pesquisa por "Python" você pode perceber que à URL foi adicionado o parâmetro query=python no final lá no campo de busca, indicando o que buscamos. A nossa aplicação vai justamente manipular uma URL para conseguir extrair o valor dos parâmetros dessa URL.

Para fazer isso vamos utilizar o editor de texto PyCharm e vamos começar entendendo um pouco mais sobre a classe string ou str do Python e quais são os métodos que ela fornece para nós.

Em seguida vamos utilizar princípios de orientação a objeto para criar a nossa própria classe, o ExtratorURL, que vai ser responsável pela extração do valor dos parâmetros de uma URL para nós. Essa classe vai conter diversos métodos, alguns responsáveis pela sanitização da URL e também pela validação da URL.

E falando em validação, vamos precisar aprender sobre expressões regulares ou regex, que é uma ferramenta para você conseguir identificar um determinado padrão dentro de um texto ou verificar se o seu texto segue certo formato, como, por exemplo, verificar se uma URL segue um formato https://www.alura.com.br.

Por fim, vamos aprender um pouco mais sobre os métodos especiais do Python, que são esses métodos que começam e terminam com dois underlines, como, por exemplo, o método __len__, o método __str__ ou o método __eq__. E veremos como podemos implementar esses métodos nas nossas classes para adicionar algum comportamento específico à nossa classe.

Ao final do curso você vai entender muito bem sobre todos esses tópicos e conseguir aplicar isso em diferentes áreas da programação. Então, vamos lá? Te vejo nos próximos vídeos.

Introdução e fatiamento de strings - Parâmetros em páginas da Internet

Navegando pela internet você já deve ter percebido que a URL das páginas tem um certo padrão. Aqui, por exemplo, eu estou no Twitter e você pode perceber que na barra de endereço do navegador tem o https://twitter.com - indicando o domínio ou em qual site eu estou - e o /home - indicando que eu estou na página inicial do Twitter.

Além disso, você já talvez tenha percebido que, por exemplo, aqui no Twitter, se eu fizer uma busca por "alura", a minha URL é alterada. E vamos copiá-la para o bloco de notas, para conseguirmos visualizar melhor?

https://twitter.com/search?q=alura&src=typed_query

Agora a minha URL está da seguinte maneira: “https://twitter.com”, indicando o domínio ou o site que eu estou, /search, indicando que eu estou na página de busca. Além disso, foi adicionado aqui um ponto de interrogação e alguns valores.

Essa parte da URL é o que chamamos de parâmetros da URL, e eles funcionam como se fossem variáveis que são passadas para o nosso programa. Aqui, por exemplo, temos a primeira variável q=alura, e esse "q" é uma abreviação de query, do inglês, que significa "consulta", ou seja, qual foi a busca ou a consulta que eu fiz. E está dizendo que foi igual a "alura", que foi a busca que eu digitei.

Além disso, na parte dos parâmetros da URL, teremos o "e comercial" (&), que serve para separar esses parâmetros. Então temos o nosso segundo parâmetro aqui, src, que é da abreviação de source, do inglês, origem, ou seja, vai indicar para a nossa aplicação qual foi a origem daquela consulta.

E aqui no caso, origem =typed_query, uma consulta digitada, só dizendo para a aplicação do Twitter que eu digitei o termo "alura" ali. Então nós conseguimos separar nossa URL nessas duas grandes partes, a base e os parâmetros dela.

Suponha então que fomos chamados para fazer uma aplicação de conversão de moeda, uma página de câmbio do banco ByteBank. Como seria a URL nesse caso? Vamos nos basear na URL do Twitter. Temos https://, o domínio ou o site, bytebank.com, e a página /cambio?, certo?. E agora eu preciso dos meus parâmetros.

Para fazer câmbio ou conversão de moeda eu vou precisar saber qual é a moeda de origem, para qual moeda ou qual é a moeda de destino que aquele valor tem que ser convertido e qual a quantidade, quantas unidades da moeda de origem.

Ou seja, podemos ter um parâmetro aqui moedaOrigem=real, outro parâmetro separado pelo "e comercial" (&), &moedaDestino=dolar – eu vou maximizar para conseguirmos ver o bloco de notas todo – e por último &quantidade=100, indicando que eu quero converter 100 unidades da moeda real para dólar.

http://bytebank.com/cambio?moedaOrigem=real&moedaDestino=dolar&quantidade=100

Para isso precisamos extrair esses valores da URL e é isso que veremos ao longo desse curso. Vamos começar primeiro criando o nosso projeto no PyCharm?

Eu vou abrir o PyCharm e assim que ele carregar ele vai me mostrar a página para eu escolher um projeto ou criar um novo projeto, e no meu caso eu vou clicar aqui em cima, em “New Project”, para criar um novo projeto. Eu vou dar o nome do meu projeto, “extrator-url”, porque vamos extrair valores da nossa URL, e vou clicar em "criar", aqui embaixo.

Assim que esse projeto for criado vamos poder criar o nosso primeiro arquivo, clicando aqui no menu à esquerda em “File > New” e selecionando “Python File”, para criar um novo arquivo Python, o qual eu vou chamar de “main”.

Criamos o nosso primeiro arquivo main.py e vamos nesse arquivo declarar uma variável URL, e vamos copiar e colar aquela variável do ByteBank aqui mesmo e declará-la como uma string, colocando aspas em volta.

url = "https://bytebank.com/cambio?moedaOrigem=real&moedaDestino=dolar&quantidade=100"

E agora, só para ver se conseguimos realmente executar esse programa, vamos imprimir na tela a nossa URL escrevendo print(url) na linha seguinte, clicar aqui no menu superior em “Run > Run” e selecionar o “main” como o arquivo que eu quero executar. Perfeito, você consegue ver aqui na parte de baixo que ele imprimiu a nossa URL na tela.

Então vimos que uma URL, no fim das contas, pode ser representada como uma string, criamos o nosso projeto aqui no PyCharm e vamos usar o PyCharm porque ele vai dar muitas funcionalidades para nós, vai ficar mais fácil de conseguirmos trabalhar aqui com o projeto.

Vimos então que a nossa URL pode ser dividida em duas grandes partes, a base dela e a parte dos parâmetros dela. Vimos que esses parâmetros funcionam também como se fossem variáveis para o nosso programa, onde ele tem certo nome, por exemplo, moedaOrigem=real, que seria o valor dessa variável.

E temos agora o nosso projeto, podemos começar a trabalhar nele e extrair esses valores para conseguir fazer a conversão da moeda. Na sequência nós vamos ver como utilizar o método de fatiamento para fazer isso.

Introdução e fatiamento de strings - Fatiamento de strings

Até o momento criamos o nosso projeto, entendemos um pouco mais como funciona o formato de uma URL, sabendo que ela é dividida entre duas grandes partes, a primeira que vem antes do ponto de interrogação, que é o que estamos chamando de base da URL, e essa parte que vem depois do ponto de interrogação, que é o que estamos chamando dos parâmetros da URL.

Agora queremos dividir essas duas partes e salvá-las em duas variáveis diferentes usando o Python. E para isso primeiro precisamos aprender sobre fatiamento, o que é o fatiamento?

Vamos abrir o Python Console e conseguimos abrir isso clicando nesse menu inferior, à esquerda, em “Python Console”, e essa é mais uma das funcionalidades que o PyCharm, nossa IDE, fornece, onde você consegue escrever uma instrução e já executá-la ao mesmo tempo, sem ter que salvar o arquivo e depois executar. Por exemplo, eu posso escrever aqui no console print(‘Alura’) e ele já imprime "Alura" para mim na tela.

O que é o fatiamento? O fatiamento é uma funcionalidade do Python onde você consegue extrair um pedaço de uma string. Como assim? Finge que temos uma variável, por exemplo, vou chamá-la de texto, e vou dar para essa variável o valor de uma string texto = ’abcde’.

Isso aqui vai ser uma string com cinco caracteres, o ‘abcde’, e cada caractere tem sua própria posição, por exemplo, começando no 0, o a vai ser o caractere na posição 0, o b na posição 1, o c na posição 2, d na posição 3, o e na posição 4 e por aí vai.

Isso significa que eu posso, por exemplo, acessar um dos caracteres através da posição. Para eu fazer isso eu utilizo os colchetes. Por exemplo, aqui em texto eu coloco o texto na posição texto[0] e ao apertar “Enter” ele me retornou o caractere ‘a’, porque é aquele caractere que está na posição 0.

>>> texto = 'abcde'
>>> texto[0]
>>> 'a'

O fatiamento você passa duas posições para a sua string original e essas duas posições serão as posições de início e de fim de onde você quer extrair, ou seja, o que você quer extrair daquela string?

Por exemplo, se eu quiser extrair o "a" e o "b", eu vou ter que passar a posição inicial 0 e a sintaxe do fatiamento é a seguinte, você coloca dois pontos e a posição final, por exemplo, 1: texto[0:1] Será que isso vai funcionar? Vamos ver o que ele vai me retornar ao apertar “Enter”. E ele continuou retornando só a letra ‘a’.

>>> texto = 'abcde'
>>> texto[0]
>>> 'a'

>>> texto[0:1]
>>> 'a'

Isso acontece porque o fatiamento tem uma característica onde o primeiro argumento dele, no nosso caso foi o 0, é inclusivo, mas o segundo argumento, o argumento final, é exclusivo, ou seja, ele não vai incluir o caractere naquela posição. Então aqui, na verdade, estamos falando: “Eu quero do 0 até a posição exatamente antes do 1, que também é a 0”, logo nós acabamos só retornando a letra ‘a’.

Se eu quiser "a" e "b", sendo que o "b" está na posição 1, eu preciso buscar por texto, posição 0: inicial e a posição final exclusiva 2, ou seja, até antes do 2, logo, a posição 1, texto[0:2]. E assim ele me retorna ’ab’.

>>> texto = 'abcde'
>>> texto[0]
'a'

>>> texto[0:1]
'a'

>>>texto[0:2]
'ab'

Com isso talvez já dê para começarmos a entender como vamos extrair da nossa URL original a primeira parte dela, que é tudo isso que vem antes do ponto de interrogação, https://bytebank.com/cambio?, e a segunda parte, que são os parâmetros que vêm depois do ponto de interrogação, moedaOrigem=real&moedaDestino=dólar&quantidade=100. Então vamos lá.

Primeiro, deixa eu fechar o nosso Python Console e eu vou fechar também nossa árvore de arquivos na aba lateral, para ficar mais fácil de visualizarmos. E para simplificar um pouco eu vou encurtar a nossa URL original, eu vou tirar o ‘https’ e eu vou deixar só um parâmetro, vou tirar os outros dois parâmetros aqui, moedaDestino e quantidade, deixando só o parâmetro moedaOrigem.

url = "bytebank.com/cambio?moedaOrigem=real"
print(url)

Agora o que queremos? Eu quero pegar esse primeiro pedaço aqui, bytebank.com/cambio. Para isso você concorda que vamos ter que ir justamente até o ponto de interrogação e excluindo o ponto interrogação? Ou seja, o nosso fatiamento vai ser alguma coisa como url[], partindo do 0 e indo até, vamos ter que contar aqui, "b" na posição 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 e 19 caracteres até o ponto de interrogação.

E eu posso colocar o 19 aqui, url_base = url[0:19] ele não vai incluir o ponto interrogação e é justamente o que eu quero, eu quero pegar só essa primeira parte, bytebank.com/cambio, sem o ponto de interrogação. E vamos salvar isso numa variável, por exemplo, url_base. Perfeito.

Vamos imprimir para ver se ela está retornando o que esperamos? Eu vou salvar, “Ctrl + S” para salvar e vou executar apertando aqui em “Run”, no menu superior, e vamos rodar esse programa.

url = "bytebank.com/cambio?moedaOrigem=real"
print(url)

url_base = url[0:19]
print(url_base)

Primeiro ele imprimiu a URL toda, que é o que a linha 2 está fazendo, print URL, e depois imprimiu bytebank.com/cambio, que é o que esperávamos. E agora queremos a parte dos parâmetros.

Vamos criar outra variável url_parametros e ela vai receber o fatiamento da minha URL original a partir de certa posição. E aqui nós sabemos que a interrogação está na posição 19, então se o primeiro argumento do fatiamento é inclusivo, ou seja, ele vai incluir o caractere naquela posição, eu não posso passar 19 aqui, eu tenho que passar a posição 20.

Então vou começar na posição 20, que seria o ‘m’ de moedaOrigem e vou até qual posição? 20 é esse, então 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35. Eu posso colocar o 35 aqui, mas lembrando, como ele é exclusivo para o segundo argumento do fatiamento, eu preciso colocar o 35 mais um, logo, o 36. url_parametros = url[20:36] e assim ele vai incluir todo o meu parâmetro.

url = "bytebank.com/cambio?moedaOrigem=real"
print(url)

url_base = url[0:19]
print(url_base)

url_parametros = url[20:36]
print(url_parametros)

E vamos imprimir para vermos se conseguimos buscar isso mesmo, vou clicar em “Run”, executar aqui o “main”. Primeira coisa, imprimiu nossa URL toda. A segunda, o nosso segundo print imprimiu bytebank.com/cambio, que é a base da URL, e por último o terceiro print, que está imprimindo moedaOrigem=real, que é o nosso parâmetro.

Assim então nós conseguimos quebrar nossa URL utilizando o fatiamento e salvar as duas partes dela, a URL base e a URL parâmetros em duas variáveis separadas.

Uma coisa interessante de falar em relação ao fatiamento é que ele não altera a URL original, ou seja, eu estou fatiando, mas na verdade eu pego aquela fatia e faço uma cópia dela, eu não altero aquela minha URL original.

Tanto que se depois de tudo isso eu der um print(url) de novo, você vai perceber que ela continua sem ter sido alterada, olha aqui embaixo, bytebank.com/cambio e está tudo aqui, o ponto de interrogação e os nossos parâmetros.

bytebank.com/cambio?moedaOrigem=real

Então o fatiamento funciona assim e essa é uma das características das strings no Python, porque elas são imutáveis, depois de serem criadas, elas não podem ser alteradas, você só pode geralmente extrair pedaços dela, que na verdade vão ser novas cópias a partir dela.

E para entender um pouco mais sobre mutabilidade, eu vou deixar o link de artigo acessível aqui falando um pouco mais sobre como a imutabilidade funciona no Python, se você quiser se aprofundar um pouco mais nesse tema.

Vimos que fatiamos nossa string baseando na posição do nosso ponto de interrogação, mas e se essa posição mudasse? Por exemplo, se aqui tivesse o https:// o nosso ponto interrogação não estaria mais na posição 19, então como conseguimos encontrar essa posição? Isso nós veremos na aula a seguir.

Sobre o curso String em Python: extraindo informações de uma URL

O curso String em Python: extraindo informações de uma URL possui 109 minutos de vídeos, em um total de 48 atividades. Gostou? Conheça nossos outros cursos de Python em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Python acessando integralmente esse e outros cursos, comece hoje!

Plus

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$85
à vista R$1.020
Matricule-se

Pro

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas