quarta-feira, 21 de novembro de 2012

Recuperando conteúdo de uma Tag HTML de uma URL

Recentemente precisei recuperar o conteúdo de uma tag html de uma URL para um propósito específico.

O Youtube, fez o favor de remover as famosas Tags dos vídeos de suas páginas, juntamente com o atributo de mesmo nome de sua API de integração. Com isso, não consegui mais peguar as tags para atualizar os vídeos de um projeto.

Percebi porém , que se procurasse no código fonte de cada página de vídeo, lá estavam a maioria, (senão todas) das tags no html <meta name="keywords">. Motivo pelo qual acredito que ainda esteja lá seria por busca e indexação dos vídeos.

Para recuperá-las, procurei algum pacote do python para fazer o parse do html e me deparei com o
Beautiful Soup. Ele pode ser instalado com o comando dentro do seu ENV:

pip install BeautifulSoup

E também possui uma documentação bem completa no link: http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html

Criei uma def para fazer o trabalho, vamos a ela:


def get_tags(youtube_id):

	response = urllib2.urlopen('http://www.youtube.com/watch?v=%s' % youtube_id )
	html = str( response.read() )

	xmlSoup = BeautifulStoneSoup(html)

	tags = xmlSoup.findAll(attrs={"name" : "keywords"})[0]
	tags = str(tags)
	tags = tags.replace('\n','')

	return tags


Será retornado uma string com o conteúdo da tag meta keywords, sendo possível fazer todos os tratamentos necessários, como transformar em uma tupla, inserir no banco, etc.

Para outras tags, recomendo uma olhada na documentação do BeautifulSoup, pois tem várias formas de encontrar o que deseja.

hasta!