|
| 1 | +Exemplo de como "Parsear" Sites com BeautifulSoup |
| 2 | +################################################# |
| 3 | + |
| 4 | +:date: 2014-05-13 22:00 |
| 5 | +:tags: beautifulsoup |
| 6 | +:category: Python |
| 7 | +:slug: parseando-sites-com-beautifulsoup |
| 8 | +:author: Gilmar Soares |
| 9 | + |
| 10 | +:github: github.com/linuxsoares |
| 11 | + |
| 12 | + |
| 13 | +================================= |
| 14 | +Parseando Sites com BeautifulSoup |
| 15 | +================================= |
| 16 | + |
| 17 | + |
| 18 | +Como "pegar" informações de Sites com BeautifulSoup? |
| 19 | +---------------------------------------------------- |
| 20 | + |
| 21 | +Vamos falar nesse artigo do Beautifulsoup, biblioteca Python necessária para fazer “parse” de sites. |
| 22 | + |
| 23 | +Para iniciarmos o exemplo será necessário instalar a biblioteca Python Beautifulsoup no seu ambiente, e assumo que o leitor tenha PIP instalado, então segue comando para instalação: |
| 24 | + |
| 25 | +.. code-block:: bash |
| 26 | +
|
| 27 | + $ pip install beautifulsoup4 |
| 28 | +
|
| 29 | +A partir desse momento vamos começar a trabalhar com o Beautifulsoup. |
| 30 | + |
| 31 | +Imaginamos que você tenha que fazer parse de um simples site, e que este tenha apenas esse arquivo html: |
| 32 | + |
| 33 | +.. code-block:: bash |
| 34 | +
|
| 35 | + $ arquivo_html = ”””<html> |
| 36 | + $ <head> |
| 37 | + $ <title> |
| 38 | + $ Exemplo de Beautifulsoup |
| 39 | + $ </title> |
| 40 | + $ </head> |
| 41 | + $ <body> |
| 42 | + $ <p class="title"> |
| 43 | + $ <b> |
| 44 | + $ Exemplo de Beautifulsoup |
| 45 | + $ </b> |
| 46 | + $ </p> |
| 47 | + $ <p class="story"> |
| 48 | + $ Vamos fazer "parses" desse simples exemplo de html com Beautifulsoup. |
| 49 | + $ <a class="sister" href="http://examplo.com/link1" id="link1"> |
| 50 | + $ Link1 |
| 51 | + $ </a> |
| 52 | + $ , |
| 53 | + $ <a class="sister" href="http://examplo.com/link2" id="link2"> |
| 54 | + $ Link2 |
| 55 | + $ </a> |
| 56 | + $ and |
| 57 | + $ <a class="sister" href="http://examplo.com/link2_teste" id="link2"> |
| 58 | + $ Link3 Test |
| 59 | + $ </a> |
| 60 | + $ ; Vamos lá!!!!!!!!!!!!!!!!!!!!! |
| 61 | + $ </p> |
| 62 | + $ <p class="story"> |
| 63 | + $ ... |
| 64 | + $ </p> |
| 65 | + $ </body> |
| 66 | + $ </html>””” |
| 67 | +
|
| 68 | +Vamos fazer nossa biblioteca ler nossa variavel html, dessa forma: |
| 69 | + |
| 70 | +.. code-block:: bash |
| 71 | + |
| 72 | + $ soup = BeautifulSoup(arquivo_html ) |
| 73 | +
|
| 74 | +Pronto! Assim como tudo em Python… é simples :) |
| 75 | + |
| 76 | +Agora podemos trabalhar com todo o conteúdo HTML a partir dos métodos da biblioteca. |
| 77 | + |
| 78 | +Para o título: |
| 79 | + |
| 80 | +.. code-block:: bash |
| 81 | +
|
| 82 | + $ soup.title: este comando irá trazer o seguinte: => <title>Exemplo de Beautifulsoup</title> |
| 83 | +
|
| 84 | +Para as informações desse título: |
| 85 | + |
| 86 | +.. code-block:: bash |
| 87 | +
|
| 88 | + $ soup.title.string: este comando irá trazer o seguinte => Exemplo de Beautifulsoup |
| 89 | +
|
| 90 | +Para os “P” de HTML: |
| 91 | +.. code-block:: bash |
| 92 | +
|
| 93 | + $ soup.p: este comando irá trazer o seguinte => <p class="title"><b>Exemplo de Beautifulsoup</b></p> |
| 94 | +
|
| 95 | +Para pegar o nome da classe usada no “P”: |
| 96 | +.. code-block:: bash |
| 97 | +
|
| 98 | + $ soup.p['class']: este comando irá trazer o seguinte => u'title' |
| 99 | +
|
| 100 | +Vamos agora demonstrar como fazer uma busca no documento HTML, digamos que tenhamos a necessidade de pegar todos os <a></a> do nosso arquivo HTML, então usaremos o Beautifulsoup da seguinte maneira: |
| 101 | + |
| 102 | +.. code-block:: bash |
| 103 | +
|
| 104 | + $ soup.find_all('a'): este comando irá trazer o seguinte => |
| 105 | + $ [ |
| 106 | + $ <a class="sister"href="http://examplo.com/link1" id="link1">Link1</a> |
| 107 | + $ <a class="sister" href="http://examplo.com/link2" id="link2">Link2</a> |
| 108 | + $ <a class="sister" href="http://examplo.com/link2_teste" id="link2">Link3 Test</a> |
| 109 | + $ ] |
| 110 | +
|
| 111 | +Vamos deixar essa busca mais elaborada, vamos buscar um ID especifico do nosso arquivo HTML dessa forma: |
| 112 | + |
| 113 | +.. code-block:: bash |
| 114 | +
|
| 115 | + $ soup.find(id="link1"): este comando irá trazer o seguinte => |
| 116 | + $ <a class="sister"href="http://examplo.com/link1" id="link1">Link1</a> |
| 117 | +
|
| 118 | +Bom, esta é uma pequena explicação de como funciona o Beautifulsoup. Caso tenham interesse em algo mais especifico, eu utilizei em produção para fazer captura de uns dados, o Script esta no GITHUB no seguinte endereço: |
| 119 | +https://github.com/linuxsoares/scripts/blob/master/getVerbos.py |
| 120 | +nesse Script implementei bastante coisa do Beautifulsoup e algumas outras coisas também. |
| 121 | + |
| 122 | +Qualquer dúvida pode entrar em contato: |
| 123 | + |
| 124 | + * Twitter: `@gilmar_soares <https://twitter.com/gilmar_soares>`_ |
| 125 | + * Facebook: `facebook.com/linux.soares <https://www.facebook.com/linux.soares>`_ |
| 126 | + |
| 127 | + |
| 128 | + |
| 129 | + |
| 130 | + |
0 commit comments