user_agent = "Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome /7.0.517.41 Safari/534.7" opener = urllib2.build_opener() opener.addheaders = [('User-agent', user_agent)] html = opener.open("http://www.caelum.com.br").read()
Precisamos criar um objeto opener, este será responsável por executar nossas requisições através do método open, em seguida, chamamos o método read para ler a resposta da nossa requisição.
Também defini no cabeçalho da requisição (addHeaders) o attributo "User-agent".
Esse é o primeiro passo, obter o html, agora vem a mágica
soup = BeautifulSoup(html)
A classe BeautifulSoup é quem vai nos ajudar a navegar no html de maneira mais OO.
Digamos que precisamos encontrar todas as tags divs:
divs = soup.findAll('div')
Podemos inclusive definir algumas condições de pesquisa.
Vamos buscar todas as tags divs com o atributo class igual a "grupo"
divs = [div for link in soup.findAll('div') if div.get("class") == "grupo "]
Pronto, acabamos de definir um filtro de pesquisa.
E para fazermos o download de um determinado arquivo?
Digamos que a página em questão possui links das suas músicas preferidas, podemos criar um filtro que pesquise todos os link e em seguida execute cada um desses link para fazer o download do mp3.
link = [link for link in soup.findAll('a') if link.get("href").endswith(".mp3")]
Pronto, filtramos os links que terminam com a extensão mp3, agora vamos fazer o download desses arquivos:
for link in link: nome_arquivo = link[link.rfind("/"):] urllib.urlretrieve(nome_arquivo,"/tmp/"+nome_arquivo)
Com o método urlretrieve da biblioteca urlib baixamos e gravamos o arquivo, passando como primeiro parâmetro o nome do arquivo e o segundo onde ele será salvo.
Este foi um exemplo bem básico e trivial de como usar o BeautifulSoup, nos próximos post sobre o assunto, irei detalhar mais sobre algumas formas mais complexas de navegação, filtros e pesquisa.
O código completo do exemplo pode ser encontrado aqui.
O código completo do exemplo pode ser encontrado aqui.
Nenhum comentário:
Postar um comentário