56
FACULDADE 7 DE SETEMBRO - FA7 CURSO GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO INDEXAÇÃO DE INFORMAÇÕES USANDO WEB CRAWLER Clêrton Cunha Leal

uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

FACULDADE 7 DE SETEMBRO - FA7

CURSO GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO

INDEXAÇÃO DE INFORMAÇÕES USANDO WEB CRAWLER

Clêrton Cunha Leal

FORTALEZA – 2015

Page 2: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

CLÊRTON CUNHA LEAL

INDEXAÇÃO DE INFORMAÇÕES USANDO UM WEB CRAWLER

Projeto de Monografia apresentada à Faculdade 7

de Setembro como requisito parcial para obtenção

do título de Bacharel em Sistemas de Informação.

Orientador: Tarciane Andrade, Mestre.

FORTALEZA – 2015

2

Page 3: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

RESUMO

Na atualidade, a web é cada vez mais onipresente no dia a dia de todas as

pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

realizar buscas dentre as diversas informações contidas na internet. Nesse cenário torna-

se muito conveniente a existência de um indexador para essas informações, pois uma

vez que as informações tenham sido indexadas, elas poderão ser pesquisadas e

encontradas com extrema facilidade pelos usuários. A técnica de Web Crawler pode ser

utilizada para resolver este problema. Esta técnica consiste na utilização de agentes

inteligentes que irão varrer as fontes originais de conteúdo, interpretar as informações

existentes e indexar as mesmas. Este trabalho tem o intuito de explorar os diferentes

métodos de Crawler usados para a indexação de conteúdo na internet através do

desenvolvimento de um estudo de caso.

Palavras chave: Crawler, indexação.

3

Page 4: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

SUMÁRIO

1. INTRODUÇÃO........................................................................................................5

1.1. OBJETIVO GERAL.........................................................................................6

1.2. OBJETIVOS ESPECÍFICOS...........................................................................6

2. FUNDAMENTAÇÃO TEÓRICA.............................................................................7

2.1. HTML E CSS...................................................................................................7

2.2. JSOUP.............................................................................................................8

2.3. WEB CRAWLER.............................................................................................8

2.4. SCALA.............................................................................................................9

2.5. INDEXAÇÃO.................................................................................................10

2.6. API WEB.......................................................................................................10

2.7. REST.............................................................................................................11

2.8. JSON..............................................................................................................12

2.9. RUBY ON RAILS..........................................................................................13

2.10. ANDROID......................................................................................................15

3. TRABALHOS RELACIONADOS..........................................................................16

4. METODOLOGIA..................................................................................................19

4.1. INFORMAÇÕES DO WEB CRAWLER........................................................19

4.2. REQUISITOS DA APLICAÇÃO WEB..........................................................20

4.3. APLICAÇÃO MÓVEL...................................................................................21

5. RESULTADOS......................................................................................................22

5.1. CONSTRUÇÃO DO WEB CRAWLER..........................................................22

5.2. DESENVOLVIMENTO DA APLICAÇÃO WEBUTILIZANDO WEB

CRAWLER................................................................................................................26

5.3. DESENVOLVIMENTO DA APLICAÇÃO MÓVEL......................................29

6. CONCLUSÕES E TRABALHOS FUTUROS.........................................................34

7. REFERÊNCIAS BIBLIOGRÁFICAS....................................................................35

4

Page 5: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

1. INTRODUÇÃO

Na atualidade, a web é cada vez mais onipresente no dia a dia de todas as

pessoas. Em um mundo em que as enciclopédias impressas foram trocados por

enciclopédias interativas online, que as cartas foram trocadas por emails e que cada vez

mais se busca informação na internet, é de extrema importância que as pessoas sejam

capazes de realizar buscas dentre as diversas informações contidas na internet. Agregar

informações de uma mesma temática e possibilitar a busca das mesmas, é um dos

principais problemas existentes na atualidade.

A indexação de dados, que é o processo de tornar uma massa de dados

pesquisável externamente. Segundo Silva (SILVA e FUJITA, 2004), indexação é um

dos principais casos de estudo da computação contemporânea e tem como finalidade a

agregação de conteúdos com semântica comum. Para esse contexto, a aplicação de um

web crawler se torna adequada. Web crawler (TRACKMAVEN, 2015) consiste em um

software inteligente, que tem como principal atividade analisar o conteúdo de paginas

na internet, e a partir das mesmas, extrair informações relevantes e indexa-las para um

uso posterior. A utilização da técnica de web crawler para indexação de conteúdo na

internet, auxilia os desenvolvedores a construírem aplicações simples e capazes de unir

grandes quantidades de informações pulverizadas.

Nesse cenário torna-se muito conveniente a existência de um indexador para

essas informações. Uma vez que as informações tenham sido indexadas, elas poderão

ser pesquisadas e encontradas com extrema facilidade pelos usuários, além de poderem

estar disponíveis através de um único lugar, responsável pela indexação.

Segundo Silva (SILVA e FUJITA, 2004) a principal dificuldade para a

indexação desses conteúdos é a falta de padronização. Normalmente cada fonte de

informação adota um formato próprio para a exposição de seus dados, tornando assim a

unificação dessas diferentes fontes um trabalho extremamente complexo. A técnica de

Web Crawler pode ser utilizada para resolver este problema.

Este trabalho tem o intuito de explorar a metodologia contida na criação de um

web crawler. Além dessa analise básica, com o intuito de se estudar mais

profundamente o crawler para o conteúdo de páginas web, será construído uma

aplicação totalmente funcional que executará uma prova de conceito de indexação de

conteúdo sobre a temática de cinema. Essa aplicação autônoma irá coletar dados dos

cinemas disponíveis, filmes em exibição e sinopse dos filmes disponíveis na cidade de

Fortaleza, agrupando assim esses dados de forma estruturada em um banco de dados.

5

Page 6: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

Além do web crawler construído para o estudo de caso, serão desenvolvidos

duas aplicações externas que irão consumir os dados gerados pelo web crawler. Uma

aplicação web, que possibilitará que os dados extraídos pelo web crawler estejam

acessíveis para qualquer usuário com um browser e internet, e uma aplicação móvel que

também irá consumir os dados gerados pelo web crawler. Essa aplicação móvel irá

permitir que a maioria das pessoas com um smartphone tenham acesso simplificado as

informações geradas pelo web crawler descrito anteriormente.

Uma vez que esses dados estruturados estejam armazenados, os mesmos podem

ser utilizados facilmente para prover conteúdo a diversas aplicações, quer seja por

acesso direto ao banco de dados, quer seja via uma API expositiva a ser construída.

Através da construção dessa aplicação prova de conceito, será realizado um

estudo aprofundado do funcionamento de crawlers, além disso será realizada a

documentação de todo o processo de desenvolvimento.

1.1. OBJETIVO GERAL

Este trabalho tem como objetivo, o estudo da técnica de web crawler para

indexação de conteúdo de páginas web sobre uma semântica especifica. Sendo assim,

será criado uma aplicação para execução de prova de conceito que usará técnicas de

crawler, para obter dados de diversas páginas da internet e agregá-las em um único

lugar, possibilitando sua busca, análise e consumo por qualquer pessoa.

1.2. OBJETIVOS ESPECÍFICOS

Para a execução desse estudo serão necessário os seguintes pontos:

Escolha de uma linguagem de programação que será usada na construção de

uma prova de conceito;

Construção da aplicação prova de conceito com a linguagem escolhida nos

pontos anteriores;

Análise, documentação e conclusões detalhadas dos resultados obtidos durante o

estudo e construção da prova de conceito;

Construção de uma aplicação web que irá consumir dos dados provenientes do

web crawler;

Exposição dos dados indexados pelo web crawler através de uma API REST;

6

Page 7: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

Construção de um aplicação móvel que irá consumir dos dados provenientes do

web crawler a partir da API REST criada anteriormente.

2. FUNDAMENTAÇÃO TEÓRICA

Durante essa seção serão apresentados os conceitos principais que embasam este

trabalho.

2.1. HTML E CSS

“HTML (Hyper-Text Markup Language) ou

Linguagem de marcação de hipertexto é a linguagem com a

qual as paginas web são escritas. Também conhecidas como

documentos de hipertexto, as paginas web devem sempre estar

de acordo com a especificação do HTML para serem exibidas

de maneira coerente pelos browsers web.” (TECHTERMS,

2015)

HTML é a linguagem, com a qual todas as paginas web são escritas. Com ela,

pode-se definir com facilidade a estrutura básica de toda uma pagina web estática, assim

como tudo o seu conteúdo.

O HTML não tem como responsabilidade definir o layout da pagina web a ser

construída, mas sim os elementos que devem estar contidos na mesma. A definição

desse layout é de responsabilidade do CSS.“CSS (Cascading Style Sheet) ou folhas de estilo em

cascata são usadas para formatar o layout de paginas web. Ele

pode ser usado para o estilo de textos, tamanhos de tabelas e

outros aspectos visuais de uma pagina web, desde que a mesma

seja escrita com HTML.” (TECHTERMS, 2015)

CSS é a forma mais comum se descrever layouts de paginas web. Com ele pode-

se facilmente definir o estilo de layout especifico para cada componente de uma pagina.

Para se fazer isso, torna-se necessário que as tags de HTML sejam marcadas com

identificadores especiais, com os quais o CSS é capaz de buscar para aplicar o estilo

definido. Com isso tem-se a definição do termo query de CSS, no qual consiste de um

texto descritivo que o CSS usa para identificar em qual elemento o estilo deve ser

aplicado.

De modo geral, as queries de CSS também podem ser usadas para se buscar os

elementos de uma pagina web e manipula-los de maneira livre. Para essa prova de

7

Page 8: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

conceito, a biblioteca de código aberto Jsoup será utilizada para possibilitar com que

essas queries de CSS sejam utilizadas pelo web crawler.

2.2. JSOUP

Jsoup é uma API de código livre escrita em Java, que tem como o intuito

permitir que sejam realizadas queries de CSS em paginas web a partir de código escrito

em Java.

Jsoup é uma ferramenta que pode ser utilizada para a construção de um web

crawler devido a sua capacidade de simplificar o processo de encontrar elementos

contidos em uma pagina escrita em HTML com CSS, e capturar o valor contido nesses

elementos. Uma vez que se tem essa capacidade de capturar os valores contidos em

uma pagina web, pode-se desenvolver um software inteligente, que a partir do endereço

de uma pagina, extraia conteúdo especifico da mesma.

2.3. WEB CRAWLER

Crawlers são a forma mais comum de se indexar informações na web. Web

crawlers consistem em sistemas inteligentes, que tem a função de analisar diversas

paginas contidas na internet, com o intuito de encontrar padrões específicos que possam

ser indexados, tais como títulos de paginas, links para outras paginas, palavras chave e

padrões pré-estabelecidos. Essas informações a serem indexadas vão permitir que

paginas sejam agrupadas sobre um mesmo contexto de informação, além disso

possibilitam que uma pagina seja encontrada através de uma busca contextual.

Mecanismos como esse são usados todos os dias por grandes empresas que provem

sistemas de busca para seus usuários, para indexar informações na internet e torna-las

disponíveis para o publico.“Web crawler é a técnica central usada por motores de

busca, permitindo que eles vasculharem paginas da internet

com o intuito de indexar suas informações de maneira

adequada. Esses crawlers vasculham as paginas da internet de

maneira sistemática em buscas de padrões indexáveis, tais

como palavras chaves, tipo de conteúdo, links contidos e

estruturas especiais. Retornando assim essas informações de

maneira estruturada para o servidor em questão. Em seguida

ele aplica a mesma estratégia para todos os links contidos na

pagina inicial.” (TRACKMAVEN, 2015)

8

Page 9: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

Percorrer uma página na internet e extrair dessa pagina suas informações

relevantes é um trabalho complexo e amplamente estudado nos dias atuais, para esta

tarefa existem os web crawlers.

Na construção do web crawler para essa prova de conceito, foram analisadas

diversas linguagens de programação, analisando suas vantagens e desvantagens para

esta finalidade. Assim, a linguagem escolhida foi o Scala, devido a sua característica de

escalabilidade, facilidade ao processar grandes massas de dados e compatibilidade com

bibliotecas escritas em Java. Sendo assim, segue uma explicação mais detalhada sobre a

linguagem Scala.

2.4. SCALA

Scala é uma acrônimo de “Scalable Language” (Linguagem escalável).

Segundo Salgado (SALGADO, 2015), Scala é uma linguagem de

programação de propósito geral e com múltiplos paradigmas de programação, tendo

fortes características do paradigma da orientação a objetos e do paradigma funcional.

Projetada para expressar padrões de programação comuns de uma forma concisa,

elegante e com uma tipagem forte, desestimulando e impedindo uma maior ocorrência

de erros. Além disso, a linguagem é completamente interoperável com a linguagem

Java, sendo possível se utilizar qualquer biblioteca existente em java a partir do código

escrito em Scala.

Scala foi a linguagem escolhida para a construção do web crawler que compõe

um dos projetos contidos neste trabalho, devido algumas de suas características:

Scala é uma linguagem que é executada sobre a JVM (Java Virtual Machine),

sendo assim, qualquer maquina que possua a JVM instalada será capaz de

executar o web crawler;

Facilidade na construção de scripts. Scala possui toda uma API (Application

Programming Interface) que favorece a construção de scripts de execução

simples. Tornando assim uma boa escolha para a construção de um web crawler;

Orientação a Objetos. Com a orientação a objetos, pode-se organizar melhor a

estrutura do código a ser criado, além disso, possibilita que o código gerado seja

de manutenção mais simples e fácil a longo prazo;

9

Page 10: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

Paradigma funcional. Scala possui forte traços do paradigma funcional, nos

quais tem-se valores imutais, funções como tipos primitivos da linguagem, uso

de streams com map e reduce e alta disponibilidade para trabalhos concorrentes;

Integração com Java. Java tem uma infinidade de API publicas disponíveis para

uso livre. Com Scala será possível se utilizar todas essas API de modo nativo e

convertendo todas as ligações automaticamente do código Java para Scala.

Com a linguagem para a construção do web crawler definida, se torna

importante definir qual a finalidade do web crawler, sendo assim, torna-se preciso se

definir indexação de dados.

2.5. INDEXAÇÃO

Segundo Lancaster (LANCASTER, 2004), indexação é uma atividade integrante

do tratamento temático da informação documental. A indexação tem por finalidade

extrair termos representativos de documentos com o objetivo de referenciá-los para uma

melhor recuperação.

O processo de indexar, consiste em analisar uma massa de dados dispersos e de

difícil acesso e a partir dessa análise, tornar possível a fácil pesquisa nos mesmos assim

como a extração de informações importantes contidas nessa massa de dados. “Técnicas de indexação possibilitam a busca, coleta,

modelagem e armazenamento de informações para facilitar

uma rápida e precisa consulta das mesmas. Um modelo de

indexação incorpora conceitos de varias disciplinas como

linguística, cognição psicológica, matemática, informática e

ciência da computação. Um nome alternativo para o processo

de indexação usado sobre o contexto de paginas de internet é

indexação web.” (BROWN, 1996)

Existem diversas técnicas de indexação, porém no contexto da internet a

indexação mais comumente usada é a de palavras chave, que consiste na técnica

associar uma pagina, às palavras mais usadas na mesma, sendo assim, torna-se possível

se achar essa pagina através de uma simples busca por umas das palavras chaves mais

usadas.

Uma vez que o conteúdo já esteja indexado, é necessário que o mesmo possa ser

acessado por outras aplicações. Para essa finalidade pode ser utilizado uma API web.

2.6. API WEB

10

Page 11: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

Segundo FOLDOC (FOLDOC, 1995), API (Application Programming

Interface)  é um conjunto de padrões estabelecidos por um software, nos quais

possibilitam que suas funcionalidades sejam acessadas por aplicativos que não

pretendem envolver-se em detalhes da implementação do software, mas apenas usar

seus serviços.“No contexto de desenvolvimento web, uma API é um

conjunto definido de mensagens de requisição e resposta HTTP

(Hypertext Transfer Protocol, em português Protocolo de

Transferência de Hipertexto), geralmente expressado nos

formatos XML ou JSON. Ainda que termo seja um sinônimo

para web service, a chamada Web 2.0 está aos poucos

depreciando o modelo de serviços SOAP para a

técnica REST.” (CENTER, 2014)

Uma API web tem como principal característica a exposição das funcionalidades

do servidor, de maneira transparente, para qualquer cliente que tenha interesse de

consumi-las, independente de sua plataforma, implementação ou conhecimento interno

sobre o servidor. Tendo esse preceito básico, uma API web irá expor serviços

específicos de um servidor web, no qual qualquer cliente capaz de usar o protocolo

HTTP poderá utilizar. Nenhum dos clientes a consumir esses serviços tem a necessidade

real de entender como os serviços funcionam ou são implementados, cabendo a eles

apenas a responsabilidade de usufruir dos mesmo.

Na atualidade, umas das formas mais utilizadas de se construir uma API web é

usando-se o padrão de REST.

2.7. REST

Segundo Fielding (FIELDING, 2000), REST (Representational State Transfer),

em português Transferência de Estado Representacional, é uma abstração da arquitetura

da World Wide Web, mais precisamente, é um estilo arquitetural que consiste de um

conjunto coordenado de restrições arquiteturais aplicadas a componentes, conectores e

elementos de dados dentro de um sistema de hipermídia distribuído. O REST ignora os

detalhes da implementação de componente e a sintaxe de protocolo com o objetivo de

focar nos papéis dos componentes, nas restrições sobre sua interação com outros

componentes e na sua interpretação de elementos de dados significantes. “A REST é pretendida como uma imagem do design

de como a aplicação se comportará: uma rede de websites (um

11

Page 12: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

estado virtual), onde o utilizador progride com uma aplicação

selecionando as ligações (transições do estado), tendo como

resultado a página seguinte (que representa o estado seguinte

da aplicação) que está sendo transferida ao utilizador e

apresentada para seu uso.” (FIELDING, 2000)

O REST tem algumas características básicas de sua existência que devem ser

salientados:

Protocolo cliente servidor sem estado: Com a intenção de se manter a

escalabilidade constante dos servidores web, é necessário que todas as chamadas

realizadas sobre o padrão REST sejam atômicas e não guardem estado. Isso

significa que todas as informações necessárias para o consumo de um serviço

web exposto pelo padrão REST deve estar contida em uma única requisição

HTTP;

Conjunto de operações predefinidas: O protocolo de HTTP por si só já trás

algumas operações pré-definidas (POST, GET, PUT, DELETE). No padrão

REST essas ações serão combinadas com ações de CRUD (CREATE, READ,

UPDATE, DELETE) de dados. Sendo assim tem-se uma relação direta entras as

operações de POST – CREATE, GET – READ, UPDATE – PUT e DELETE –

DELETE;

Sintaxe universal para identificar recursos: No REST cada serviço tem uma

URL (Uniform Resource Locator – Localizador padrão de recursos) única,

tornando assim todos os serviços de fácil acesso e padronizados;

Uso de Hipermidia: Isso se refere ao formato de dados transitados pela

aplicação web e seus clientes a consumirem os serviços. Os formatos padrões

usados em aplicações REST são XML (eXtensible Markup Language) e JSON.

Com essas características, o padrão REST oferece ações padrões de CRUD para

a aplicação, comunicação usando hipermídia que pode ser implementada por qualquer

plataforma e escalabilidade, se tornando assim uma escolha adequada para a maioria

dos projetos.

Durante a prova de conceito será usado o padrão REST para expor as

informação indexadas pelo web crawler. Todas as informações poderão ser obtidas

através de chamadas de GET para o servidor e todas as informações serão transmitidas

sobre o formato de JSON.

A seguir o padrão JSON será descrito de maneira mais detalhada.

12

Page 13: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

2.8. JSON

Segundo (JSON, 2014), (JavaScript Object Notation) é um formato leve e

extremamente legível de troca de dados, além de ser fácil de analisar e gerar para

máquinas. Ele é baseado na linguagem de programação JavaScript. JSON é um formato

de texto que é completamente independente de qualquer linguagem de programação,

sendo assim, suas convenções são familiares aos programadores de todas as linguagens

derivadas do C, incluindo C , C ++, C #, Java, JavaScript, Perl, Python, e muitas outras.

Estas propriedades fizeram o JSON o principal padrão de troca de dados através de rede

na atualidade, e o torna uma linguagem de troca de dados ideal.

JSON tem se tornado uma opção cada vez mais utilizada para troca de dados na

internet. Sendo usado principalmente em detrimento do XML, solução muito mais

verbosa e que tem sérios problemas de performance quando analisado por maquinas.

O JSON é constituído basicamente por duas estruturas de dados:

Uma coleção de pares, com chave e valor. Essa estrutura em varias

linguagens e conhecida como Hash;

Uma lista de valores. A maioria das linguagens chama essa estrutura de

Array.

A figura 1 é um exemplo de JSON.

Figura 1 – Exemplo de JSON

Como forma de utilizar as tecnologias detalhadas nesta seção e nas anteriores, o

framework escolhido para desenvolvimento foi o Ruby on Rails, que será utilizado tanto

para o desenvolvimento da aplicação web quanto para o a construção da API REST que

13

Page 14: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

irá expor as informações indexadas sobre o formato de JSON. A seguir serão detalhadas

algumas vantagens da utilização desta plataforma de desenvolvimento, assim como o

motivo de sua escolha.

2.9. RUBY ON RAILS

Segundo Hansson (MONTEIRO, 2014), Ruby on Rails é

um framework livre que promete aumentar a velocidade e facilidade no

desenvolvimento de sites orientados a banco de dados, uma vez que é possível criar

aplicações com base em estruturas de dados pré-definidas. Frequentemente referenciado

como Rails, o Ruby on Rails é um projeto de código aberto escrito sobre a linguagem de

programação Ruby. As aplicações criadas utilizando o framework Ruby on Rails são

desenvolvidas com base no padrão de arquitetura MVC (Model-View-Controller).

O Ruby on Rails foi criado por David Heinemeier Hansson para uma projeto

particular chamado Basecamp no ano de 2003. Ao observar a grande produtividade que

ele obteve ao utilizar o Ruby on Rails na contrução de seu projeto, Hansson resolveu

publicá-lo gratuitamente para a comunidade com o intuito que ele fosse mais utilizado e

evoluído em conjunto.

Ruby on Rails é uma framework focado em produtividade. Tendo como uma de

suas principais funcionalidades o Scaffold, que tem a capacidade de criar telas de

CRUD completas e funcionais a partir de simples comandos executados através de um

terminal de linhas de comando. Essa funcionalidade poderosa permite a criação de

sistemas web inteiros em questão de minutos, tornando assim o Ruby on Rails um

candidato forte para a construção de qualquer aplicação web.

O Ruby on Rails foi construído sobre dois preceitos básicos e que permeiam

toda a sua implementação: DRY e Convention Over Configuration.

O DRY (Don’t Repeat Yourself – Não se repita) é a filosofia numero um do

framework. O DRY prega que o código deve ter uma padronização forte, os objetos

devem ser nomeados de forma legível e que favoreça a sua identificação, e

principalmente que um código deve ser escrito apenas uma vez. Caso uma

funcionalidade tenha de ser utilizada em mais de um lugar do sistema, ele deve ser

reutilizada e não copiada para outro bloco de código.

Um exemplo claro do uso de DRY seria, ao invés de se ter uma tabela Pessoas e

uma classe Pessoa, com suas respectivas propriedades e um método de “get” e “set”

14

Page 15: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

para cada campo na tabela, tem-se apenas o banco de dados. As propriedades e métodos

necessários são incluídos automaticamente na classe através de funcionalidades da

linguagem Ruby.

Já o Convention Over Configuration (Convenção sobre configuração) é o

conceito que diz que no lugar de se configurar um projeto sobre necessidades

especificas, deve-se adotar convenções globais de código implementadas pelo

framework. Adotar essas convenções faz com que os códigos gerados sejam

padronizados e de fácil entendimento por qualquer desenvolvedor que conheça o

padrão. Além disso, todo o tempo que seria necessário configurando o projeto será

economizado, tornando assim todos o desenvolvimento ainda mais rápido.

Ruby on Rails é o framework sobre o qual será construída a API REST que irá

expor os dados indexados. Uma das vantagens de uma API REST é a possibilidade da

mesma ser utilizada e adaptação para diversos sistemas operacionais e dispositivos,

entre eles, o sistema operacional Android que foi construído para atuar em dispositivos

móveis. Durante este trabalho será desenvolvido também uma aplicação para

dispositivos móveis que irá, através da API REST, construída previamente, consumir os

dados indexados pelo web crawler. Essa aplicação móvel é compatível com

smartphones que possuam o sistema operacional Android, sendo assim segue a seguir

uma explicação detalhada sobre essa plataforma.

2.10. ANDROID

Android é um sistema operacional para dispositivos móveis baseado no kernel

do linux e atualmente mantido pela empresa de tecnologia Google. O Android é

projetado principalmente para dispositivos móveis com tela sensível ao toque como

Smartphones, Tablets e relógios inteligentes. Além disso, ele pode ser adaptado para

funcionar em outros tipos de dispositivos, como TVs (Android TV) e carros (Android

Auto). O sistema operacional utiliza-se da tela sensível ao toque, permitindo assim que

o usuário possa manipular com facilidade qualquer objeto exibido na tela e tenha acesso

a outras funcionalidade utilitárias como um teclado virtual. Apesar de seu uso primário

ser encontrado em smartphones com tela sensível ao toque, o Android também é

utilizado em consoles de videogames, câmeras digitais, computadores e outros

dispositivos eletrônicos.“O código do sistema operacional é disponibilizado

pelo Google sob licenças de código aberto, apecsar da maior

15

Page 16: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

parte dos dispositivos ser lançada com uma combinação de

software livre e software privado. Inicialmente foi

desenvolvido pela empresa Android, Inc., a qual o Google dava

suporte financeiramente. Foi comprada pela mesma em 2005 e

revelado em 2007 junto com a fundação da Open Handset

Alliance, consórcio entre empresas

de hardware, software e telecomunicações com o intuito de

desenvolver a indústria de dispositivos móveis.” (GOOGLE,

2014)

Android é o sistema operacional para celulares mais utilizado do mundo, tendo

vendido cerca de 1 bilhão de unidades no ano de 2014 e possuindo quase 85% do

mercado de smartphones nesse mesmo ano, conforme detalhado na Figura 2.

Figura 2 – Venda em pontos percentuais de smartphones por plataforma.

A natureza livre do Android tem atraído um número cada vez maior de

desenvolvedores nos últimos anos, devido a sua facilidade de desenvolvimento e o uso

da linguagem de programação Java, tornando assim a plataforma cada vez mais

interessante os usuários.

Portanto, esta seção descreveu os principais conceitos utilizados durante a

implementação da aplicação. A seguir serão apresentados alguns trabalhos

desenvolvidos por outros autores e que estão relacionados a este, de forma a destacar

16

Page 17: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

como a comunidade acadêmica tem se utilizado dos benefícios de web crawler e

indexação.

3. TRABALHOS RELACIONADOSFoi realizada uma pesquisa sobre trabalhos relacionados ao tema de construção

de web crawlers. Foram pesquisados artigos dos mais distintos estados do Brasil e

outros países, sendo selecionados três, que demonstraram ser de especial interesse para

a temática escolhida. Espera-se através destes, adquirir cada vez mais conhecimento

sobre a construção, manutenção e empregabilidade de web crawlers.

O primeiro artigo, fruto da pesquisa bibliográfica realizada, possui como autores

Heitor de Sousa Miranda, Rafael Gonçalves Barreira e Edeilson Milhomem da Silva

(MIRANDA, BARREIRA e SILVA, 2011) que escreveram o artigo intitulado

“Desenvolvimento de um web crawler para indexação documentos científicos“ que trata

sobre a crescente complexidade dos dados contidos na internet e de toda a dificuldade

que representa organizar toda essa informação.

A solução encontrada por esses autores foi a construção de um web crawler com

a capacidade de criar um banco de dados que possua todas as informações necessárias

para a pesquisa em um único lugar. Podemos combinar esse banco de dados criado com

uma Recuperação de Informação (RI). Ele terá a responsabilidade de indexar toda essa

informação, possibilitando assim sua fácil pesquisa e consumo.

Para exemplificar essa solução, foi criado um web crawler com o objetivo de

mineração de artigos científicos. O site (CITESEERX, 2015) que, por ser uma

biblioteca digital, serviu como alvo para a aplicação do mecanismo. O web crawler

extrai informações como autor, titulo, resumo, editor, volume, etc, possibilitando assim

a fácil indexação dos mesmos. Todas essas informações foram postas em um banco de

dados.

Foi construído um web crawler para a captação de artigos científicos, assim

como um RI para facilitar a indexação desses mesmos artigos. Todos os artigos vem de

uma fonte em comum, mantendo assim um padrão único e fácil de analisar, facilitando e

muito a construção de um web crawler.

O trabalho desses autores se demonstrou curto e conciso, pois primeiramente

analisa as partes necessárias para a resolução do problema, analisa as diferentes

possibilidades para o mesmo, escolhe quais serão as abordagens usadas na resolução e

17

Page 18: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

finalmente resolve o problema de uma forma simples.

Os autores Daniel Gomes e Mário J. Silva (GOMES e SILVA, 2006) escreveram

no artigo científico intitulado “Tarântula – Sistema de recolha de documentos da web” o

atual problema do crescente número de informação não indexada da internet.

O conteúdo da internet cresce cada vez mais, tornando assim cada vez mais

difícil de encontrar conteúdos relevantes. Com isso, a importância de crawlers é cada

vez maior para o mercado mundial. Ao mesmo tempo que essa importância cresce, o

número de artigos publicados sobre o mesmo não acompanha esse número, se

mostrando poucos e vagos. Isso ocorre devido ao alto apelo comercial que os crawlers

tem com os serviços de busca. Sendo assim, a maior parte do conhecimento sobre a

construção dessas complexas ferramentas fica em segredo industrial.

Com esse panorama, os autores decidiram que deveria ser realizada a construção

de um sistema de indexação genérico de conteúdo na internet. Essa seria uma solução

aberta e de proposito geral, sendo assim um guia para a construção de crawlers. Com a

proposta do projeto definida, foi iniciado o desenvolvimento do Tarântula, um modulo

de recolhimento de documentos genéricos na internet capaz de ser acoplados a sistemas

diferentes e de fácil integração.

O Tarântula foi integrado com sucesso como módulo de captação em dois

projetos com objetivos e requisitos distintos, o TUMBA e o DROP. O TUMBA é um

projeto de investigação que consiste no desenvolvimento de um motor de busca de

documentos na Web de Portugal. O DROP é um sistema de coleta e armazenamento de

publicações científicas online. Uma vez que este trabalho fosse concluído, toda a

pesquisa e consumo desses artigos científicos ficaria muito mais fácil e rápida de se

realizar.

Os resultados obtidos pelo projeto Tarântula foram impressionantes. A analise

foi efetuada a partir de 12.781 fontes (uma por servidor) obtidas a partir do servidor de

nomes da FCCN onde foram usados 7 máquinas diferentes em cluster, com diferentes

configurações, para o funcionamento do Tarântula. A analise durou mais que 4 dias e

foram gerados 676.261 documentos indexados durante todo o processo.

Outro trabalho analisado, foi o artigo intitulado “Um estudo comparativo dos

sistemas de busca na web” dos autores Janice Inês Deters, Silsomar Flôres Adaime

(DETERS e ADAIME, 2003) que fala sobre a crescente importância dos sistemas de

buscas na internet para os usuários modernos e sobre a frustração causada devido a

inabilidade no uso de tais ferramentas.

18

Page 19: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

De acordo com os autores, o crescimento do volume e da diversidade de

informações na Internet originou a necessidade do uso de sistemas de recuperação de

informação na web. Atualmente, encontra-se na web uma quantidade expressiva de

sistemas de busca. Estudos informam que a maior causa de frustração dos usuários ao

usarem sistemas de busca vem do fato dos mesmos serem totalmente leigos sobre o

funcionamento de tais ferramentas.

Vendo esse problema, o artigo propõe que seria possível se treinar os usuário nas

ferramentas de busca utilizada pelos mesmos, ou mesmo dar-lhes conhecimento como

essas ferramentas de busca funcionam. O trabalho possui o intuito de explicar as

diferentes formas sobre as quais são construídos sistemas de busca, desde os sistemas de

RI, até a indexação de dados por diretório. Sendo citado também a construção de

crawlers inteligentes que tem a finalidade de coletar as informações a serem indexadas.

Deixando assim o leitor totalmente informado como o processo de indexação é

construído. Esse artigo em particular tem um grande intuito ilustrativo sobre a

construção de web crawlers, se focando mais no lado do usuários sobre o uso de

buscadores que na construção em si das ferramentas.

Diante do exposto e da confirmação da importância do tema, o presente trabalho

irá tratar da construção de um web crawler dedicado a indexação de informações de

cinema na cidade de Fortaleza. Espera-se com isso obter uma total analise sobre

estruturação e construção desses componentes tão importante na internet atualmente.

4. METODOLOGIA

A metodologia a ser abordada para se estudar de maneira aprofundada o

conceito de web crawlers será a prova de conceito. Será realizada uma prova de

conceito completa sobre a construção, uso e utilização de web crawlers sobre uma

temática específica. Para que esse intuito seja alcançado, deverão ser construídos, além

do web crawler, algumas outras aplicações que irão demonstrar formas de uso real do

web crawler.

Sendo assim, a prova de conceito a ser construída será constituída de três

aplicações distintas que, uma vez sobre o mesmo contexto, servirão para demonstrar

uma aplicação real dos web crawlers.

4.1. INFORMAÇÕES DO WEB CRAWLER

19

Page 20: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

O web crawler é a peça central dessa prova de conceito, sendo ele o responsável

por gerar todas as informações a serem consumidas por qualquer outra aplicação

interessada nas mesmas.

A construção de um web crawler por si só é uma tarefa muito complexa e passa

por diversas etapas. Inicialmente, é necessário se buscar uma fonte que contenha as

informações de interesse para o projeto, para que assim as mesmas possam ser

indexadas. No caso dessa prova de conceito, a fonte escolhida para buscar informações

sobre filmes e cinemas foi o site Adoro Cinema (CINEMA, 2015). Esse site possui,

mesmo que de forma desestruturada, todas as informações necessárias para o projeto.

Foi-se analisado que o site Adoro Cinema possui informações de todos os cinemas na

cidade de Fortaleza, assim como os filmes em cartaz, horários de exibição dos mesmos

e detalhes de cada filme. Esse conjunto de informações foi considerado completo para o

desenvolvimento do projeto.

Todas as informações necessárias estão contidas de forma não indexadas nas

paginas web do site Adoro Cinema. Sendo assim, o próximo passo será extrair essas

informações de cada pagina web pertinente, e é nisso que consiste a maior

complexidade de construção de web crawlers. Paginas web são apenas uma grande

massa de texto, escrita sobre a estrutura predefinida do padrão HTML, que consegue ser

interpretada pelos browsers modernos, permitindo assim se exibir todo esse conteúdo de

maneira visualmente estruturada para o usuário. Extrair informações especificas a partir

dessa grande massa de texto é um processo complexo e demorado. Primeiramente é

necessário uma analise da estrutura real da pagina web, e saber assim previamente onde

estão todas as informações que podem ser relevantes para o projeto dentro dessas

paginas. Após isso, deve-se realizar requisições HTTP para as paginas do site Adoro

Cinema, obtendo-se assim o texto referente a cada uma das paginas web em questão.

Com essa grande massa de textos brutos, pode-se iniciar o processo de extração de

dados.

Ao se realizar essa extração de dados a partir de grandes massas de texto como

as contidas no site do Adoro Cinema, ocorrerá o processamento de uma grande massa

de dados. Esse fator fez com que a linguagem escolhida para a construção deste web

crawler tenha sido o Scala. Sendo uma linguagem com total foco com escalabilidade e

performance, essa se demonstra muito adequada para esse projeto. A partir do código

Scala, realiza-se requisições HTTP para o site do Adoro Cinema, no qual ocorrerá a

extração de dados.

20

Page 21: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

Após essas informações serem extraídas do site do Adoro Cinema, elas devem

ser armazenadas de maneira ordenada, para que assim elas possam ser acessadas

posteriormente facilmente. Nesse caso será utilizado o banco de dados relacional para

armazenar esses dados.

4.2. REQUISITOS DA APLICAÇÃO WEB

Com o intuito de demonstrar um dos possíveis usos dos dados indexados através

de um web crawler, será construída uma aplicação web, escrita sobre o framework Ruby

on Rails, que irá consumir as informações indexadas pelo web crawler e inseri-las no

banco de dados.

Essa aplicação web servirá como um portal de acesso livre a todas as

informações relacionadas a cinemas indexadas pelo web crawler.

Uma vez que as tabelas do banco de dados já estejam criadas e devidamente

populadas pelo web crawler, deve-se inicialmente criar um modo de tornar essas

informações acessíveis pela aplicação web, sendo assim, será necessário a construção de

telas de CRUDs (funcionalidade que permite a criação, atualização e deleção de tuplas

de uma tabela especifica do banco de dados a partir de uma interface web), pois através

delas os usuários poderão ter um contato inicial com os dados indexados. Para a criação

das telas de CRUDs em questão, o framework Ruby on Rails possui a ferramenta

scaffold, com a qual se torna necessário apenas informar quais os nomes das tabelas a

serem acessadas e suas respectivas colunas, com isso a ferramenta se encarrega de criar

todo o código necessário para que essas telas de CRUD funcionem de forma adequada.

Além das telas de CRUD, torna-se necessário a criação de uma tela inicial para

essa aplicação web. Uma tela que deverá exibir de forma simples as principais

informações referentes ao filmes em exibição naquele momento. Informações como

titulo do filme e imagem de capa deverão estar contidos nessa tela. Ao usuário clicar em

uma dessas capas de filme, ele deverá ser redirecionado para uma tela na qual poderá ter

acesso a mais informações sobre o filme em questão. Informações como sinopse,

duração filme, gênero do filme, nome do diretor, cinemas que estão exibindo o filme e

horários de exibição do mesmo.

Adicionalmente, a aplicação web deverá disponibilizar uma API web usando o

padrão REST, sobre a qual irá disponibilizar todas as informações indexadas pelo web

crawler para qualquer outra aplicação de terceiros interessadas nos dados indexados.

21

Page 22: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

Essa exposição de dados já indexados abre um novo leque de possibilidade em

aplicações construídas para exibir informações sobre cinemas.

4.3. APLICAÇÃO MÓVEL

Aplicações para dispositivos moveis, são na atualidade, uma das maneiras mais

comuns pelas quais as pessoas consomem conteúdo. Sobre esse aspecto, torna-se natural

que para demonstrar mais uma das utilidades da indexação de dados por um web

crawler, seja construído uma aplicação móvel que irá consumir esses dados indexados e

exibi-los de maneira simples para os usuários do mesmo.

A aplicação móvel será construída sobre o Android framework, tornando-a

assim compatível com qualquer dispositivos que rode o sistema operacional Android.

Essa foi a escolha óbvia a ser feita, uma vez que o sistema operacional Android ocupa

mais de 80% do mercado mundial de smartphones.

A aplicação móvel irá acessar todas as informações indexadas através da API

REST fornecida pela aplicação web construída anteriormente, se tornando assim um

bom exemplo de como construir aplicações terceiras que irão consumir os dados

indexados pelo web crawler. Uma vez que esta aplicação de exemplo esteja finalizada,

outras pessoas poderão tomar conhecimento de como construir suas próprias aplicações

que consomem esta mesma API REST, disponibilizando assim as informações

indexadas para cada vez mais usuários.

5. RESULTADOS

Nesta sessão será discorrido de maneira detalhada todo o processo de

desenvolvimento para esta prova de conceito. Desde a construção do web crawler,

aplicação web e aplicação móvel.

5.1. CONSTRUÇÃO DO WEB CRAWLER

Conforme já citado anteriormente na seção de Metodologia, o primeiro passo

necessário, antes de se iniciar o desenvolvimento do web crawler, foi a realização de

uma analise detalhada das informações contidas no site do Adoro Cinema. Após uma

analise inicial, observou-se que o site Adoro Cinema possuía uma pagina dedicada para

cada cinema existente no território nacional do Brasil, assim como visto na Figura 3,

sendo assim, foi-se separado de forma manual quais desses cinemas eram realmente

22

Page 23: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

relevantes durante a construção deste estudo de caso. Essa filtragem manual dos

cinemas disponíveis levou a um total de 8 cinemas na cidade de Fortaleza que deveriam

ser englobados na indexação do web crawler, assim como visto na Figura 4. Esses

cinemas foram:

Cinema Arcoíris Del Paseo

(http://www.adorocinema.com/programacao/cinema-A0033;

Cinema Arcoplex Aldeota

(http://www.adorocinema.com/programacao/cinema-A0015);

Cinema Arcoplex Pátio Dom Luís

(http://www.adorocinema.com/programacao/cinema-A0021/);

Cinema Centerplex Via Sul Shopping

(http://www.adorocinema.com/programacao/cinema-A0063);

Cinema Cine Benfica

(http://www.adorocinema.com/programacao/cinema-A0089);

Cinema Cinépolis Joquei Fortaleza

(http://www.adorocinema.com/programacao/cinema-A0590);

Cinema Kinoplex North Shopping

(http://www.adorocinema.com/programacao/cinema-A0296);

Cinema Kinoplex Shopping Iguatemi

(http://www.adorocinema.com/programacao/cinema-A0305).

Figura 3 – Pagina do site Adoro Cinema dedicada a um cinema.

23

Page 24: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

Figura 4 – Enumerado com todos os cinema analisados.

Nestas paginas dedicadas a cada cinema existem informações muito relevantes

para o sistema de indexação, informações como quais filmes estão em cartaz no dia

corrente, endereço do cinema e horário de exibição dos filme em exibição. Informações

mais detalhadas sobre os filmes em exibição, como sinopse, duração do filme, gênero e

diretor, não estão contidas nessas paginas dedicadas aos cinemas, sendo assim

necessário se obter essas informações específicas a partir de outras paginas.

Após a analise inicial das paginas para cada cinema, viu-se que seria necessário

acessar outras paginas de conteúdo para cada filme em exibição, com o intuito de obter

informações como sinopse, duração do filme, nome do diretor, género do filme, entre

outros. Com isso, a partir da pagina dedicada de cada cinema, foi extraído o endereço da

página que contem o detalhamento de cada filme em exibição e, a partir de então, será

possível extrair as informações restantes a serem indexadas pelo web crawler a ser

construído, conforme ilustrado na Figura 5.

Figura 5 – Pagina do site Adoro Cinema dedicada a um filme.

24

Page 25: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

Com base na analise realizada no site do Adoro Cinema, sobre quais as

informações terão de ser indexadas, um próximo passo adequado é a construção de um

banco de dados capaz de receber essas informações a serem indexadas. Assim, chegou-

se a construção de quatro tabelas básicas para esse banco de dados:

Filme, com as colunas de titulo, sinopse, faixa etária, data de lançamento,

imagem de capa do filme, duração do filme, nome do diretor e género do

filme;

Cinema, com as colunas de nome, endereço, horário de abertura e

fechamento do estabelecimento;

Endereço, com as colunas de rua, numero, cidade, estado, país e CEP;

Cinema-filme, uma tabela de relacionamento de muitos para muitos entre

cinema e filme.

O modelo para o banco de dados segue a baixo, ilustrado na Figura 6.

Figura 6 – Modelo do banco de dados.

Analisar de maneira manual a grande massa de dados proveniente do site Adoro

Cinema, embora seja algo perfeitamente possível, seria algo de extrema complexidade e

possivelmente geraria uma grande quantidade de código de difícil manutenção e baixa

legibilidade. Para contornar essa problema, será usada nessa etapa de extração, uma

biblioteca de código aberto escrita em Java chamada Jsoup. A utilização dessa

biblioteca só é possível devido o fato da linguagem Scala ser totalmente interoperável

com código Java, tendo assim total disponibilidade de uso de qualquer biblioteca Java

disponível no mercado. Uma vez que se tenha a grande massa de dados do site Adoro

Cinema, a biblioteca Jsoup possui diversos métodos utilitários que possibilitam realizar

buscas de maneira facilitada e intuitiva nos mesmos. Deve-se atentar para o fato que

devido à prévia analise da estrutura das paginas web do site Adoro Cinema, sabe-se,

aproximadamente, em que local da massa de dados está contida cada informação

25

Page 26: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

desejada. Sendo assim, será possível se realizar buscas nessa grande massa de dados e

obter informações relacionadas aos cinemas e filmes na cidade de Fortaleza. Dentre as

informações indexadas, estarão os cinemas disponíveis, assim como seus filmes em

exibição, salas de cinema, horários de exibição e sinopse dos filmes.

Com a analise para a construção do web crawler já concluída, tem-se inicio a sua

codificação em Scala. O crawler consiste em um código inteligente, que irá iterar sobre

a listagem de endereços de cinemas a serem analisados, e utilizando-se as APIs do

Jsoup, extrair dados de domínio especifico contidos nas mesmas. Dentre esses dados

estão os endereços para as paginas especificas de filmes, nas quais também terão de ser

analisadas. Após esta extração de dados, os mesmos serão armazenados no banco de

dados. Na Figura 7 a seguir, é possível se ver um trecho de código do web crawler.

Figura 7 - Código do web crawler usando a API do Jsoup para indexar informações de páginas web.

Com o web crawler finalizado, torna-se possível avançar no projeto e iniciar a

construção da aplicação web que irá exibir os dados indexados através de um navegador

web.

26

Page 27: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

5.2. DESENVOLVIMENTO DA APLICAÇÃO WEBUTILIZANDO WEB

CRAWLER

Com os dados extraídos pelo web crawler já indexados e salvos no banco de

dados, tem-se inicio a construção da aplicação web que ira consumir estes dados e

fornecê-los de forma simples para seus usuários através de um browser.

A plataforma escolhida para o desenvolvimento da aplicação web foi o

framework Ruby on Rails. Os códigos gerados de maneira automatizada, utilizando o

comando scaffold, incluem arquivos de HTML, classes de modelo, classes

controladoras e testes unitários. O comando de scaffold usado para criar a tela de filme é

demonstrado na Figura 8.

Figura 8 - Comando de scaffold para gerar a tela de filmes.

Após o comando de scaffold tem-se as telas de cadastro, consulta, deleção e

edição para o sistema, porém estas telas estão com um visual simplista e pouco atraente,

sendo assim será necessário se utilizar técnicas de CSS para melhorar a visualização das

mesmas. Após a aplicação de CSS para estilizar as telas, é possível ver o resultado na

Figura 9.

27

Page 28: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

Figura 9 - Listagem e deleção de filmes.

Com as telas de cadastro, exibição, deleção e edição prontas, todas as

funcionalidades básicas para o sistema web estão prontas, porém existe a necessidade de

uma pagina inicial para o sistema, uma pagina que contenha a listagem de todos os

filmes em exibição de uma maneira simplificada e possibilite para os usuários, ao clicar

em um desses filmes, ir para uma tela de detalhes daquele filme. Essa nova tela de

detalhes de filmes deverá conter as informações de titulo, sinopse, diretor, gênero,

duração do filme, quais cinemas exibem o mesmo e seus respetivos horários de

exibição. Pode-se ver o resultado final dessas duas telas em questão nas figuras 10 e 11

a seguir.

Figura 10 - Pagina inicial da aplicação web.

28

Page 29: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

Figura 11 - Pagina dedicada a filmes da aplicação web.

Como passo final para a conclusão desta aplicação web, é necessário a

construção de uma API REST que será responsável por fornecer informações para

aplicações externas referentes a cinemas e filmes. Com o framework Ruby on Rails essa

operação se torna simples, tem-se apenas de se criar uma classe de JsonBuilder que será

responsável por definir quais campos deverão compor JSON a ser trafegado pela rede.

Podemos ver o arquivo de configuração utilizado para gerar os JSONs de filme na

figura 12 seguir.

Figura 12 - Arquivo de configuração para JSONs de filmes.

Como resultado final tem-se uma API REST funcional para a aplicação web.

Pode-se ver um JSON gerado pela API REST para um filme em especifico. Esse JSON

possui todas as informações relevantes sobre o filme, tais como titulo, sinopse, imagem

de capa, duração, diretor e gênero, assim como é possível ver na figuras 13 a seguir:

29

Page 30: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

Figura 13 - JSON para filme em exibição.

A API REST também fornece JSONs referentes aos cinemas disponíveis, sendo

assim o JSON para um cinema deverá ter as informações de nome do mesmo e

endereço, assim como é possível ver na figura 14 a seguir:

Figura 14 - JSON para um cinema.

Com a API REST finalizada, o próximo passo será a criação da aplicação que ira

consumir essa API.

5.3. DESENVOLVIMENTO DA APLICAÇÃO MÓVEL

Com a API REST pronta e funcional, se torna possível a construção de

aplicações externa totalmente independente do web crawler e da aplicação web, e que

irão consumir os dados fornecidos pelo API REST, para exibir assim, essas informações

para seus usuários. Para demonstrar como uma dessas aplicações externas pode ser

estruturada, foi construída uma aplicação móvel sobre o Android framework que ira

consumir a API REST e exibir suas informações através de um smartphone.

A aplicação móvel é composta principalmente por duas telas: a tela de lista

filmes e a tela de detalhes de um filme, conforme é possível se ver nas figuras 15 e 16

respectivamente a seguir:

30

Page 31: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

Figura 15 - Tela de lista de filmes carregada com sucesso.

Figura 16 - Tela de detalhes de um filme.

A tela de filmes será responsável por listar os filmes de maneira simplificada,

exibindo assim uma miniatura de sua capa e a parte inicial de sua sinopse. A tela de lista

de filmes também é capaz de filtrar os filmes a serem exibidos na mesma a partir das

listas de cinemas disponíveis. Ao se clicar sobre um dos filmes listados na tela de listas

de filmes, o usuário será redirecionado para a tela de detalhes de um filme. A tela de

detalhes de um filme possui uma imagem de tamanho grande da capa do filme em

questão, além da sinopse completa do mesmo.

A tela de lista de filme é a tela inicial da aplicação e também a que contem a

maior complexidade dentro da aplicação móvel. Ao se iniciar a aplicação, a mesma

tentará acessar a API REST produzida pela aplicação web anteriormente, como esse

31

Page 32: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

acesso a rede pode demorar, a aplicação irá exibir uma mensagem de progresso assim

como é possível ver na figura 17 a seguir:

Figura 17 - Mensagem inicial da aplicação móvel.

Caso ocorra um problema com essa requisição inicial para a API web, uma

mensagem explicando o erro será exibida para o usuário, assim como é possível ver na

figura 18 a seguir:

32

Page 33: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

Figura 18 - Mensagem de erro ao ocorrer um problema com a requisição inicial da

aplicação móvel.

Com o sucesso na requisição inicial da aplicação, a mesma terá acesso a lista de

todos os filme e cinemas que já foram indexados, e assim irá exibir a listagem contendo

todos os filmes em cartaz no momento, assim como é possível se ver na figura 15

exibida anteriormente.

Acessando o menu contido na lateral esquerda da tela de lista de filmes, é

possível ter acesso a lista completa de cinemas que foram indexados pelo web crawler,

como visto na figura 19 a seguir:

Figura 19 - Menu lateral com a lista de cinemas disponíveis.

Ao se clicar sobre um dos nomes dos cinemas disponíveis, a tela de listas de

filmes será reajustada, exibindo assim apenas os filmes em cartaz no cinema

selecionado. Além disso, o título da página exibirá o nome do cinema selecionado,

assim como é possível se ver na figura 20 a seguir:

33

Page 34: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

Figura 20 - Tela de lista de filmes, apenas com os filmes de um cinema.

Ao se clicar sobre um dos filmes da listagem, dentro da tela de lista de filmes, o

usuário será redirecionado para a tela de detalhes de filme. Nessa tela, o usuário terá

acesso a uma imagem de tamanho grande da capa do filme escolhido e a sinopse

completa do filme escolhido, assim como é possível ver na figura 16 exibida

anteriormente.

O código principal para a criação da tela de lista de filmes pode ser visto a seguir

na Figura 21 a seguir:

34

Page 35: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

Figura 21 - Código para a tela de lista de filmes.

Com a finalização da aplicação móvel tem-se por completo a prova de conceito

para indexação de dados usando web crawler. Tendo sido coberto a indexação de dados

a partir de paginas da internet, o armazenamento dessas informações, a exibição das

mesmas a partir da internet, e exposição das informações a partir de uma API REST e a

exibição das mesmas por um cliente móvel que consume a API REST.

6. CONCLUSÕES E TRABALHOS FUTUROS

Ao se concluir esse trabalho, foi construído um web crawler totalmente

funcional, e com a finalidade especifica de indexar informações referentes a cinemas e

filmes em exibição na cidade de Fortaleza, além disso, foram construídas duas

aplicações de prova de conceito capazes de consumir as informações indexadas pelo

web crawler e exibir as mesmas para usuários de diferentes plataformas. A partir da

aplicação web, os usuários serão capazes de acessar as informações indexadas através

da internet, e a partir da aplicação móvel, os usuários poderão acessar as informações

35

Page 36: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

indexadas através de smartphones com o sistema operacional Android. Espera-se com

isso demonstrar a utilidade real dos web crawler de temática especifica.

Tendo-se essa prova de conceito funcional, espera-se a mesma sirva de exemplo,

para outros pesquisadores e empresas, de como construir web crawlers de temática

especifica, tendo assim realizado uma contribuição real para a comunidade.

Em um futuro próximo será possível se ampliar as funcionalidades deste web

crawler, incluindo-se mais informações sobre os cinemas e filmes, tais como endereço

dos cinemas, horário de funcionamento dos mesmos, preços do ingressos, atores que

participam dos filmes, dentre diversas outras informações relevantes. Além disso, será

possível se ampliar o numero de cidades atendidas por esse sistema.

7. REFERÊNCIAS BIBLIOGRÁFICAS

BROWN, E. W. Execution Performance Issues in Full-Text Information Retrieval. Massachusetts: Computer Science Department Faculty Publication

Series, 1996.

CENTER, N. T. API Overview : Tech Center : NPR. NPR Tech Center, 2014.

Disponivel em: <http://www.npr.org/api/index>. Acesso em: 6 dez. 2014.

CINEMA, A. Adoro Cinema. Adoro Cinema, 2015. Disponivel em:

<www.adorocinema.com>. Acesso em: 2015.

CITESEERX. CiteSeerX. CiteSeerX, 2015. Disponivel em:

<http://citeseerx.ist.psu.edu/>. Acesso em: 12 maio 2015.

DETERS, J. I.; ADAIME, S. F. Um estudo comparativo dos sistema de busca web. Florianópolis: Universidade Federal de Santa Catarina, 2003.

FIELDING, D. R. REST – Wikipédia, a enciclopédia livre. Wikipedia, 2000.

Disponivel em: <http://pt.wikipedia.org/wiki/REST>. Acesso em: 6 dez. 2014.

FIELDING, R. T. Fielding Dissertation: CHAPTER 5: Representational State

Transfer (REST). Donald Bren School of Information and Computer Sciences @ University of California, Irvine, 2000. Disponivel em:

36

Page 37: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

<http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm>.

Acesso em: 6 dez. 2014.

FOLDOC. Application Program Interface from foldoc. Foldoc, 1995. Disponivel

em: <http://foldoc.org/Application+Program+Interface>. Acesso em: 6 dez.

2014.

GOMES, D.; SILVA, M. J. Tarântula - Sistema de recolha de documentos da web. Lisboa: Faculdade de Ciência da Universidade de Lisboa, 2006.

GOOGLE. The Android Source Code | Android Developers. Android Developers, 2014. Disponivel em:

<http://source.android.com/source/index.html>. Acesso em: 6 dez. 2014.

HANSSON, D. H. Ruby on Rails. Ruby on Rails, 2003. Disponivel em:

<http://www.rubyonrails.com>. Acesso em: 6 dez. 2014.

JSON. JSON. JSON, 06 dez. 2014. Disponivel em: <http://www.json.org/>.

Acesso em: 06 dez. 2014.

LANCASTER, F. W. Indexação e resumos: teoria e prática. [S.l.]: [s.n.], v. 2,

2004. Disponivel em: <http://pt.wikipedia.org/wiki/Indexa

%C3%A7%C3%A3o_(biblioteconomia)>.

MIRANDA, H. D. S.; BARREIRA, R. G.; SILVA, E. M. Desenvolvimento de um web crawler para indexação de documentos científicos. Palmas:

CEULP/ULBRA, 2011.

MONTEIRO, J. Ruby on Rails Brasil: Ruby on Rails Brasil. Ruby on Rails Brasil: Ruby on Rails Brasil, 2014. Disponivel em:

<http://www.rubyonrails.com.br/>. Acesso em: 6 dez. 2014.

SALGADO, F. F. Uma introdução à linguagem Scala | CCSL. CCSL | Centro de Competência em Software Livre (FLOSS Competence Center), 03 mar.

2015. Disponivel em: <http://ccsl.ime.usp.br/pt-br/uma-introducao-a-linguagem-

scala>. Acesso em: 03 mar. 2015.

SILVA, M. D. R. D.; FUJITA, M. S. A prática de indexação: análise da evolução

de tendências teóricas e metodológicas, 2004.

37

Page 38: uni7.edu.br  · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as pessoas. Sendo assim, é de extrema importância que as pessoas sejam capazes de

TECHTERMS. CSS (Cascading Style Sheet) Definition. The Tech Terms Computer Dictionary, 05 mar. 2015. Disponivel em:

<http://techterms.com/definition/css>.

TECHTERMS. HTML (Hyper-Text Markup Language) Definition. The Tech Terms Computer Dictionary, 05 mar. 2015. Disponivel em:

<http://techterms.com/definition/html>. Acesso em: 2015.

TRACKMAVEN. Web Crawling Definition - at TrackMaven.com. TrackMaven | Competitive Intelligence for Digital Marketers, 07 mar. 2015. Disponivel em:

<http://trackmaven.com/marketing-dictionary/web-crawling/>. Acesso em: 07

mar. 2015.

38