Return tag element in Beautifulsoup

Asked

Viewed 56 times

-3

Website: Subway network of the city of São Paulo.
Goal: Scraping of the name of the stations of each line.
Difficulty: I’m not able to isolate the names, for example: Jabaquara, Freedom...

from bs4 import BeautifulSoup
from urllib.request import urlopen
html = urlopen('http://www.metro.sp.gov.br/sua-viagem/trajeto/')
soup = BeautifulSoup(html, 'html.parser')

linha_1 = soup.findAll(class_='linha-1-azul')
linha_1

#[<ul class="linha-1-azul">
 <li><a href="/sua-viagem/linha-1-azul/estacao-jabaquara.aspx">Jabaquara</a></li>
 <li><a href="/sua-viagem/linha-1-azul/estacao-conceicao.aspx">Conceição</a></li>
 <li><a href="/sua-viagem/linha-1-azul/estacao-sao-judas.aspx">São Judas</a></li>
 <li><a href="/sua-viagem/linha-1-azul/estacao-saude.aspx">Saúde</a></li>
 <li><a href="/sua-viagem/linha-1-azul/estacao-praca-arvore.aspx">Praça da Árvore</a></li>
 <li><a href="/sua-viagem/linha-1-azul/estacao-santa-cruz.aspx">Santa Cruz</a></li>
 <li><a href="/sua-viagem/linha-1-azul/estacao-vila-mariana.aspx">Vila Mariana</a></li>
 <li><a href="/sua-viagem/linha-1-azul/estacao-ana-rosa.aspx">Ana Rosa</a></li>
 <li><a href="/sua-viagem/linha-1-azul/estacao-paraiso.aspx">Paraíso</a></li>
 <li><a href="/sua-viagem/linha-1-azul/estacao-vergueiro.aspx">Vergueiro</a></li>
 <li><a href="/sua-viagem/linha-1-azul/estacao-sao-joaquim.aspx">São Joaquim</a></li>
 <li><a href="/sua-viagem/linha-1-azul/estacao-liberdade.aspx">Japão-Liberdade</a></li>
 <li><a href="/sua-viagem/linha-1-azul/estacao-se.aspx">Sé</a></li>
 <li><a href="/sua-viagem/linha-1-azul/estacao-sao-bento.aspx">São Bento</a></li>
 <li><a href="/sua-viagem/linha-1-azul/estacao-luz.aspx">Luz</a></li>
 <li><a href="/sua-viagem/linha-1-azul/estacao-tiradentes.aspx">Tiradentes</a></li>
 <li><a href="/sua-viagem/linha-1-azul/estacao-armenia.aspx">Armênia</a></li>
 <li><a href="/sua-viagem/linha-1-azul/estacao-portuguesa-tiete.aspx">Portuguesa-Tietê</a></li>
 <li><a href="/sua-viagem/linha-1-azul/estacao-carandiru.aspx">Carandiru</a></li>
 <li><a href="/sua-viagem/linha-1-azul/estacao-santana.aspx">Santana</a></li>
 <li><a href="/sua-viagem/linha-1-azul/estacao-jardim-sao-paulo.aspx">Jardim São Paulo-Ayrton Senna</a></li>
 <li><a href="/sua-viagem/linha-1-azul/estacao-parada-inglesa.aspx">Parada Inglesa</a></li>
 <li class="ultimaLinha"><a href="/sua-viagem/linha-1-azul/estacao-tucuruvi.aspx">Tucuruvi</a></li>
 </ul>]

1 answer

2

If your goal is to extract the textual content from a document or textual content under a tag, you can use the method get_text() that returns all the textual content of the document or under a tag:

from bs4 import BeautifulSoup
from urllib.request import urlopen
html = urlopen('http://www.metro.sp.gov.br/sua-viagem/trajeto/')
soup = BeautifulSoup(html, 'html.parser')

linha_1 = soup.findAll(class_='linha-1-azul')

#Itera por cada elemento e obtido na consulta...
for e in linha_1:
  print(e.get_text())                 #...extrai e imprime o conteúdo textual sob o elemento.
 Jabaquara 
 Conceição 
 São Judas 
 Saúde 
 Praça da Árvore 
 Santa Cruz 
 Vila Mariana 
 Ana Rosa 
 Paraíso 
 Vergueiro 
 São Joaquim 
 Japão-Liberdade 
 Sé 
 São Bento 
 Luz 
 Tiradentes 
 Armênia 
 Portuguesa-Tietê 
 Carandiru 
 Santana 
 Jardim São Paulo-Ayrton Senna 
 Parada Inglesa 
 Tucuruvi

Test the code on Repl.it

Browser other questions tagged

You are not signed in. Login or sign up in order to post.