Crawler to extract data from fisl's talks page
JavaScript Python
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
output
.gitignore
README.mkd
parse_data.sh
parser.py
parser_lxml.py

README.mkd

FISCRAPPING

Fiscrapping é um crawler para extrair as informações da programação do FISL para serem utilizadas em outros sistemas.

Dependências

O código foi escrito em Python utilizando a biblioteca padrão da linguagem, contudo, precisamos do python 2.6 por causa dos módulos json e contextlib.

Tem uma versão utilizando o módulo lxml, mas é necessário instalá-lo:

easy_install -U lxml

Ou se você estiver utilizando o pip:

pip install -U lxml

Como utilizar

Moleza, basta fazer um checkout desse projeto utilizando o git ou clicar no link abaixo:

https://github.com/dsarch/fiscrapping/tarball/master

Se você utilizou o link acima, descompacte e entre na pasta gerada e execute o seguinte comando:

./parse_data.sh

Os arquivos gerados estarão na pasta output.

O que eu faço com esses arquivos ?

Na pasta output temos um arquivos data.json que segue esse esquema, onde o primeiro registro é uma descrição dos campos e o outro é um exemplo:

{
    talks: [
        {
            area_id: "codigo da area no sistema do fisl",
            room_id: "codigo da sala no sistema do fisl",
            zone_id: "codigo da zona no sistema do fisl",
            hour: "hora da palestra",
            title: "titulo da palestra",
            date: "dia da palestra",
            abstract: "resumo da palestra",
            level: "nivel da palestra",
            candidate: "id dos autores no sistema do fisl",
            minute: "minutos da palestra",
        },
        {
            area_id: "4",
            room_id: "8",
            zone_id: "2",
            hour: "09",
            title: "rrdtool",
            date: "2011-07-01",
            abstract: "RRDtool is a "one trick pony" open source database,
                       with the sole purpose of storing time series data.
                       In this talk you will learn how you could use
                       RRDtool how you could use it in your own scripts.
                       And where you may already be using RRDtool today
                       without knowing it.",
            level: "",
            candidate: "835",
            minute: "00"
        }
    ],  
    rooms: [
        {
            capacity: "qtd de lugares da sala",
            room_id: "id dessa sala no sistema do fisl (deve ser ligado
                      com room_id de talks)",
            name: "descricao da sala",
            position: "Parece que foi utilizado para ordenacao das salas na
                       grade de palestras",
            translation: "Se a sala permite tradução simultanea"

        },
        {
            capacity: "536",
            room_id: "8",
            name: "40-T fisl 8",
            position: "1",
            translation: "True"
        },
    ],
    areas: [
        {
            description: "Descrição da area",
            area_id: "id dessa area (deve ser ligado com o area_id de
                      talks)",
            name: "nome da area"
        },
        {
            description: "Palestras técnicas sobre
                          administração de sistemas
                          livres em geral.
                          Serviços de rede como MTA's,
                          gerenciamento de usuários e grupos,
                          autenticação,
                          monitoração,
                          servidores web, infra-estrutura, gerenciamento de
                          sistemas operacionais, gerência de
                          pacotes, gerenciamento de serviços do
                          sistema, Palestras sobre softwares e protocolos
                          de voz sobre IP, etc.",
            area_id: "11",
            name: "Administração de Sistemas e VoIP"
        }
    ],
    authors: [
        {
            author_id: "identificador de tabela",
            name: "nome do autor",
            candidate: "id desse autor no sistema do fisl (deve ser ligado
                        com candidate de talks)",
        },
        {
            author_id: "27",
            name: "Sergio Amadeu da Silveira",
            candidate: "14"
        }
    ],
    zones: [
        {
            zone_id: "id da zona no sistema do fisl (deve ser ligado com
                      zone_id de talks)",
            name: "Nome da zona"
        },
        {
            zone_id: "3",
            name: "Administração"
        }
    ]
}

Para ter acesso aos dados deserializados (json->obj) em Python, você pode ir para a pasta onde o arquivo data.json foi gerado:

$ cd pasta_com_o_codigo/output

Executar o interpretador Python:

$ python

Agora vamos importar o módulo json:

>>> import json

Uma consideração: Se o módulo json não estiver disponível, utilize o módulo simplejson dessa forma:

>>> import simplejson as json

Blz, agora vamos deserializar os dados:

>>> data = json.loads(open('data.json','r').read())

Pronto, agora podemos ver as chaves desse dicionário:

>>> data.keys()
[u'talks', u'zones', u'authors', u'rooms', u'areas']

É isso, agora é fazer o que quiser com os dados.