Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Programa para mostrar somente o conteúdo de dados de texto da página Web associada (ou seja, sem tags).

Implemente a função getContent(), que aceite como entrada um URL (como uma string) e mostre somente o conteúdo de dados de texto da página Web associada (ou seja, sem tags). Evite mostrar linhas em branco que venham após outra linha em branco e remova o espaço em branco em cada linha mostrada.

from urllib.request import urlopen
from re import findall
def getContent(url):

      content = urlopen(url).read().decode()

Imagino que precisemos usar regex para remover as tags. Alguma ideia?

4 respostas

Olá Edson,

Uma opção seria utilizar a biblioteca BeautifulSoup ou a inscriptis para extrair o texto.

Exemplo com BeautifulSoup:

import requests
from bs4 import BeautifulSoup

def getContent(url):
    page = requests.get(url)
    soup = BeautifulSoup(page.text)

    # Removendo conteúdos de script e style
    for script in soup(["script", "style"]):
        script.extract()

    # Pega apenas o texto
    text = soup.get_text()

    # Remove os espaços
    lines = [line.strip() for line in text.splitlines() if len(line.strip()) > 0]

    return "\n".join(lines)

Exemplo com inscriptis:

from urllib.request import urlopen
from inscriptis import get_text

def getContent(url):
    content = urlopen(url).read().decode()

    # Pega apenas o texto
    text = get_text(content)

    # Remove os espaços
    lines = [line.strip() for line in text.splitlines() if len(line.strip()) > 0]

    return "\n".join(lines)

Resultado:

url = 'https://cursos.alura.com.br/forum/topico-programa-para-mostrar-somente-o-conteudo-de-dados-de-texto-da-pagina-web-associada-ou-seja-sem-tags-101339'

print(getContent(url))

Saída do BeautifulSoup

Programa para mostrar somente o conteúdo de dados de texto da página Web associada (ou seja, sem tags). | Python | Alura - Cursos online de tecnologia
Ainda não tem acesso? Estude com a gente!
Matricule-se
Login
Qual curso procura?
Buscar
Ainda não tem acesso? Estude com a gente!
Matricule-se
Login
Fórum
Programa para mostrar somente o conteúdo de dados de texto da página Web associada (ou seja, sem tags).
Programação
Python
2 dias atrás
Edson
(43.8k xp, 147 posts)
Implemente a função getContent(), que aceite como entrada um URL (como uma string) e mostre somente o conteúdo de dados de texto da página Web associada (ou seja, sem tags). Evite mostrar linhas em branco que venham após outra linha em branco e remova o espaço em branco em cada linha mostrada.
from urllib.request import urlopen
from re import findall
def getContent(url):
content = urlopen(url).read().decode()
Imagino que precisemos usar regex para remover as tags.
Alguma ideia?
Confira mais conteúdo com nossos artigos sobre Programação. Conheça nossos cursos de
Programação.
Comece pela nossa formação de
Java,
.NET,
Jogos com Unity,
entre outros!
Matricule-se
Sobre a Alura
Dúvidas frequentes
Sugira um curso
Sugira uma funcionalidade
Blog da Alura
Acompanhe-nos
Apps

Saída do inscriptis

Ainda não tem acesso? Estude com a gente! Matricule-se
Login
Qual curso procura? Buscar
Ainda não tem acesso? Estude com a gente! Matricule-se
Login
Fórum
Programa para mostrar somente o conteúdo de dados de texto da página Web associada (ou seja, sem tags).
1. Programação
2. Python
2 dias atrás
Edson
( 43.8k xp , 147 posts )
Implemente a função getContent(), que aceite como entrada um URL (como uma string) e mostre somente o conteúdo de dados de texto da página Web associada (ou seja, sem tags). Evite mostrar linhas em branco que venham após outra linha em branco e remova o espaço em branco em cada linha mostrada.
from urllib.request import urlopen from re import findall def getContent(url): content = urlopen(url).read().decode()
Imagino que precisemos usar regex para remover as tags. Alguma ideia?
Confira mais conteúdo com nossos artigos sobre Programação. Conheça nossos cursos de Programação.
Comece pela nossa formação de Java, .NET, Jogos com Unity, entre outros!
Matricule-se
* Sobre a Alura
* Dúvidas frequentes
* Sugira um curso
* Sugira uma funcionalidade
* Blog da Alura
Acompanhe-nos
* Apps

Espero ter ajudado, qualquer dúvida é só falar!

@Lucas Peixoto de Alencar Rocha:

Obrigado! É possivel fazer sem estas bibliotecas? Usando apenas:

from urllib.request import urlopen
from re import findall
solução!

Desculpa pela demora, normalmente não é recomendado limpar ou trabalhar o html com regex, mas é possível sim.

Eu fiz um código inicial que talvez te ajude, regex não é o meu forte então acredito que o código pode ser melhorado:

from urllib.request import urlopen
import re


def getContent(url):
    content = urlopen(url).read().decode()

    # Transforma o html em uma única linha
    # Pelos meus testes o regex nem sempre funciona bem em múltiplas linhas
    text = "__BR__".join(content.splitlines())

    # Remove as tags script e style com o seu conteúdo e depois 
    # remove o restante das tags mantendo o conteúdo
    text = re.sub('<script.*?>.*?</script>', '', text)
    text = re.sub('<style.*?>.*?</style>', '', text)
    text = re.sub('<.*?>', '', text)

    return "\n".join([line.strip() for line in text.split("__BR__") if len(line.strip()) > 0])


print(getContent('https://cursos.alura.com.br/forum/topico-indisponibilidade-do-zipcode-101925'))

Resultado:

indisponibilidade do zipcode | Data Science: O pipeline dos dados | Alura - Cursos online de tecnologia
Ainda não tem acesso? Estude com a gente!
Matricule-se
Login
Qual curso procura?
Buscar
Ainda não tem acesso? Estude com a gente!
Matricule-se
Login
Fórum
indisponibilidade do zipcode
Data Science
Data Science
Data Science
Referente ao curso Data Science: O pipeline dos dados,
no capítulo Exploração dos dados
e atividade Exploração com Gráficos e Mapas
'>
1 hora atrás
Marcos Kyochi Takahama
(110.8k xp, 4 posts)
Ao tentar executar o comando install.packages('zipcode') , retorna a mensagem "package ‘zipcode’ is not available (for R version 3.6.2)". Qual versão do R eu preciso instalar para ter esse pacotedisponível?
Confira mais conteúdo com nossos artigos sobre Data Science. Conheça nossos cursos de
Data Science.
Comece pela nossa formação de
Data Science,
Machine Learning,
Excel VBA,
entre outros!
Assista as primeiras aulas sobre sobre Data Science: O pipeline dos dados.
Matricule-se
Sobre a Alura
Dúvidas frequentes
Sugira um curso
Sugira uma funcionalidade
Blog da Alura
Acompanhe-nos
Apps

@Lucas Peixoto de Alencar Rocha Obrigado!