Scraping
by examples


       Alexandre Gomes
http://creativecommons.org/licenses/by-nc/3.0/br/
Primeiros resultados definitivos do Censo 2010:
população do Brasil é de 190.755.799 pessoas
O Brasil tem 190.755.799 habitantes. É o que
constata a Sinopse do Censo Demográfico 2010, que
contém os primeiros resultados definitivos do XII
Recenseamento Geral do Brasil... 29/04/2011




               http://www.ibge.gov.br
Resumo do Censo 2010
Resumo do Censo 2010
Qual a relação entre os índices de
alfabetização e a proporção feminina?
Exemplo
   mulheres da região                  7.859.539
                              =                                 = 0.49
total de pessoas da região        7.859.539 + 8.004.915

 alfabetizados* da região              11.326.492
                              =                                 = 0.89
total de pessoas* da região            12.670.041

                                                    * acima de 10 anos de idade
E nas
 demais
regiões?
Scraping by
 Examples
Nokogiri
#1 Acessar a página que
    contém o dado
       desejado
teste
teste



codigo
$ rspec spec/ibge_censo2010_spec.rb:8
Run filtered using {:line_number=>8}

IBGECenso2010
  should open page with "Razão de sexo, população
de homens e mulheres"

Finished in 44.4 seconds
1 example, 0 failures
$
#2 Recuperar o
dado desejado
Antes, entenda a
estrutura da página
<table>
 <thead>...</thead>
  <tfoot>
   <tr>
    <td>...</td>
    <td>...</td>
    <td>...</td>
    <td>...</td>
    <td>...</td>
   </tr>
 </tfoot>
 <tbody>...</tbody>   Estude o caminho
                      do dado na árvore
</table>
                            DOM
Observe IDs e
classes CSS que
podem ser úteis.
class="td_numeros"
".td_numeros"


[
".td_numeros"


[   0    1          2
     3    4          5
     6    7          8
     9   10         11
    12   13         14
    15   16         17
1º dado de que
            precisamos.
         (numerador da fórmula)




[   0           1                 2
     3           4                 5
     6           7                 8
     9          10                11
    12          13                14
    15          16                17
2º dado de que
                  precisamos.
                 (para o cálculo do
              denominador da fórmula)



[   0    1             2
     3    4             5
     6    7             8
     9   10            11
    12   13            14
    15   16            17
mulheres da região N                  dados[5]
                               =
total de pessoas da região N        dados[4] + dados[5]



     [      0                  1                2
             3                  4                5
             6                  7                8
             9                 10               11
            12                 13               14
            15                 16               17
teste
code
$ rspec spec

IBGECenso2010
  razao de sexo
   should open page with "Razão de sexo,
população de homens e mulheres"
   should get number of women

Finished in 1.78 seconds
2 examples, 0 failures
teste
code
#3 Recuperar o
restante de dados
    desejados
...
#4 Apresentação
Web do scrapping
application.rb




(...)
application.rb
(...)
index.erb




(...)
http://datavisualization.ch/tools/13-javascript-libraries-for-visualizations
rme   dos
    o cha         á na
         ups  est
   m ash         ção
      visu aliza

     diferenciada
                                                    de dados

http://datavisualization.ch/tools/13-javascript-libraries-for-visualizations
#5 Visualização
(ainda tosca) do
    scrapping
#6 Visualização
diferenciada da
  informação
?
Agora, a
  mesma
   coisa,
  apenas
   com
Javascript
#1 Acessar a página que
    contém o dado
       desejado
test
code
#2 Recuperar o
dado desejado
test
code
#3 Recuperar o
restante de dados
    desejados
...
#4 Apresentação
Web do scrapping
index.html
index.html
index.html
index.html
index.html




(...)
index.html




(...)
index.html


(...)
index.html


(...)
http://chart.apis.google.com/chart?
chxt=y&chbh=a&chs=500x300&cht=bvg&chco=A2C180,3D7930
 &chd=t:49,51,51,50,50|89,82,94,95,93
           &chdl=Women|Literates&chp=0.033
código disponível em...
P&R
http://tinyurl.com/AvaliacaoSOO14
Scraping by examples

Scraping by examples