Baixando e interpretando sites (ou: como fazer backup do seu fotolog) com R.

Se você usava a internet no início dos anos 2000, muito provavelmente teve - ou quis ter - um Fotolog. Como o próprio nome diz, era um blog voltado a fotografia, onde as pessoas podiam postar 1 foto por dia (ou 6, caso pagasse). Em 01/01/2016, o Fotolog encerrou suas atividades sem aviso prévio, gerando uma comoção nos mais saudosistas, voltando ao em final de janeiro com um aviso de que o site ficaria mais um mês online, permitindo que as pessoas fizessem backup. E agora que entra a parte de R da postagem.

Como já mostramos em outras postagens, o R é uma linguagem de programação bastante poderosa e versátil, podendo ser utilizada para coisas além da estatística. Por ser a única linguagem que eu domino (e por ter mais de 500 fotos no Fotolog), resolvi fazer uma função em R para fazer um backup dele, salvando foto, descrição e comentários. Pelo site ser bastante antigo, ele não possui uma API que facilitasse a minha vida, e com isso tive que interpretar a página do Fotolog com as ferramentas que o R disponibiliza, mais especificamente, com expressão regular.
Expressão regular (ou regex, para os mais íntimos) é - resumidamente - uma maneira de localizar sequencias de caracteres em strings, de forma bastante flexível. A grande 'mágica' nas ER é que você pode procurar por padrões de caracteres, informando desde possíveis caracteres, o que deve (ou não deve) anteceder/suceder esses caracteres, quantidades, entre outras características do texto procurado. Caso você trabalha com bancos de dados que tenham string e se interessa por somente uma parte delas, aconselho fortemente a aprender ER. O help do R (?gsub) é um bom começo pois possui vários exemplos e o site regex101 permite que você teste elas em tempo real, além de listar todas as opções de tokens.


As funções que criei para fazer o backup estão no meu Git, e são bastante simples (as instruções estão nas primeiras linhas). Acredito que elas serão de pouco uso para a maioria dos leitores do blog - até porque em 1 mês elas não funcionarão mais - mas ficam como sugestão de leitura para entender um pouco mais sobre ER - temos em mente fazermos uma postagem detalhada sobre elas, além de exemplificar algumas APIs de redes sociais atuais. Ficou com alguma dúvida? Tem alguma sugestão de postagem? Deixe seu comentário!

7 comentários:

  1. Olá.

    Como faço para carregar as funções e rodar as funções? Utilizo o ubuntu, já tenho o R instalado. Gostaria de saber como proceder com as funções que criou.

    Valeu!

    ResponderExcluir
    Respostas
    1. Consegui rodar as funções mas aparece a seguinte mensagem de erro:

      Erro em gregexpr("<a href=\"", dados)[[1]] : índice fora de limites

      Oq pode ser?

      Excluir
    2. Leandro,

      Para carregar basta colar o código no R. Quanto ao erro, qual comando tu utilizou? downloadAno('login', 2015) ?


      []'s

      Excluir
  2. pô, que pena… aqui deu esse erro também:

    > downloadAno('moderaterock',2005)
    Error in gregexpr("<a href=\"", dados)[[1]] : subscript out of bounds

    ResponderExcluir
  3. achei 2 coisas que podem dar problema:

    1. se o seu Fotolog está (estava) em inglês – como o meu – vai dar o erro acima; e
    2. usar a tag META com atributo name="description" a fim de capturar a descrição da foto não é bom porque ele trunca descrições grandes. melhor usar a tag META com atributo property="og:description".

    ResponderExcluir
    Respostas
    1. Felipe,

      Obrigado por apontar esses problemas! Nos fotologs que testei (meu e de alguns amigos) funcionou porque eram todos em PT/BR e as fotos que conferi tinham descrição pequena, dai não possuía o corte.

      []'s

      Excluir