Created
September 30, 2014 14:27
-
-
Save danilovazb/a3736881b82bacee87a7 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python | |
import urllib2 | |
from bs4 import BeautifulSoup | |
# Abre a pagina principal do IBGE onde contem os links para os estados. | |
html = urllib2.urlopen('http://cidades.ibge.gov.br/xtras/home.php').read() | |
# Pega o conteudo da pagina em HTML e joga para o BeautifulSoup mapear as tags | |
soup = BeautifulSoup(html) | |
# Apenas um contador para verificar se o loop esta correto e pegando os 27 estados do pais | |
a = 1 | |
# For, pegando os links. Ele busca no codigo HTML todas as tags que começam com "<a" | |
# exemplo: <a href="../xtras/uf.php?lang=&coduf=12&search=acre" title="Acre">AC</a></li> | |
# Ele vai buscar todo o conteudo de tags de links | |
for link in soup.find_all('a'): | |
# Aqui podemos ver também que ele faz um get para pegar o conteúdo da href | |
# ou seja, o que estiver entre aspas em href ele vai trazer como texto. | |
# no caso do exemplo acima, ele vai trazer ../xtras/uf.php?lang=&coduf=12&search=acre | |
pagina = link.get('href') | |
# Eu coloquei esse IF para distinguir as URLs, assim ele me traz apenas as URLs | |
# que contem uf.php que é o que nos interessa para pegar os estados. | |
if "uf.php" in pagina: | |
# Aqui foi feito um "pulo do gato" para conseguir extrair o conteudo e fazer uma juncao | |
# com a pagina principal para acessar o link, note que ele traz "../xtras/uf.php?lang=&coduf=12&search=acre" | |
# o que eu fiz foi fazer um split para separar em um vetor tudo que vem antes de "xtras/" e depois dele. | |
# Assim pegamos apenas o final e concatenamos com o link certo da pagina. | |
pagina = pagina.split('xtras/')[1] | |
# Na variavel abaixo é feita a concatenacao. | |
url = "http://cidades.ibge.gov.br/xtras/"+pagina | |
# Aqui nos abrimos uma nova pagina com o conteudo coletado, assim fica automatico | |
# a navegacao nos links de estados. | |
html = urllib2.urlopen(url).read() | |
# Agora, fiz basicamente o que está lá em cima no código. | |
# eu estou filtrando novamente os links, mas agora das paginas dos estados | |
soup = BeautifulSoup(html) | |
for link in soup.find_all('a'): | |
pagina = link.get('href') | |
# Um novo IF, agora ele verifica se perfil.php contem no link da pagina, exatamente como o acima. | |
# Lembra que visualizamos na pagina dos estados com o "Inspecionar Elemento" para ver | |
# algo que pudesse fazer a distinção de links, então, achei o "perfil.php" | |
if "perfil.php" in pagina: | |
print a | |
a+=1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment