uni7.edu.br · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as...
Transcript of uni7.edu.br · Web viewNa atualidade, a web é cada vez mais onipresente no dia a dia de todas as...
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
<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
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