Horários
Para obter os horários foi feito web crawling, armazenando os dados numa base de dados (após parsing dos mesmos) e permitindo pesquisa sobre esta a partir de um Web service (SOAP).
Crawling
Para fazer web crawling foi utilizada a ferramenta Scrapy. Este permite fazer web crawling e extracção de dados estruturados, que depois poderá ser usado para um vasto tipo de aplicações. Foi desenvolvido em Python.
Para começar é preciso criar um novo projecto scrapy usando o comando “scrapy startproject horarios”.
Isto cria os ficheiros e pastas necessários.
scrapy.cfg (ficheiro de configuração do projecto)
horarios/ (módulo de python do projecto)
horarios/items.py (define os items a construir)
horarios/pipelines.py (ficheiro de pipelines do projecto)
horarios/settings.py (ficheiro de propriedades do projecto)
horarios/spiders/ (directório no qual são colocados os “spiders” criados)
Os Items são “containers” que irão guardar a informação obtida. Os itens são definidos em item.py.
A classe que vai percorrer as páginas e extrair a informação é chamada spider. É definida inicialmente uma lista de hiperligações a pesquisar, das quais vão ser extraídos os itens.
Um spider tem que ter obrigatoriamente três atributos:
name (identifica o spider)
start_url (onde é iniciado o processo de craling)
Método parse que irá ser chamado com o objecto Response obtido de cada URL.
O spider é o que vai fazer crawling às páginas da MoveAveiro chama-se horario_spider.py.
Este ficheiro trata de ler o conteúdo das páginas, fazer o parsing deste e guardar os dados na base de dados.
Para iniciar o processo de crawling usa-se o comando: scrapy crawl hor.org, sendo hor.org o nome do spider.
Parsing
Neste exemplo são seleccionadas todas as colunas pertencentes à classe “excel” e é extraído o seu conteúdo/texto.
Base de Dados
Para a base de dados foi usado o SQLite. SQLite é uma biblioteca open-source de software que permite construir uma base de dados SQL que não necessita de servidor ou configurações complicadas.
Actualização da Base de Dados
Para evitar a leitura constante da página, é agendado o crawling para as 17h de cada dia. Para isso é usado o ficheiro crontab do linux:
00 17 * * * linda sh /home/linda/ua/es/horarios/s.sh
O ficheiro s.sh inicia o processo de crawling. O spider obtém o hash da página e guarda numa base de dados só com uma tabela para esse fim. Cada vez que é executado compara o novo hash com o guardado anteriormente, extraindo apenas a nova informação se o hash for diferente. Desta forma é apenas actualizada a base de dados dos horários se a página tiver sido alterada.
Web Service SOAP
Para a pesquisa na base de dados foi implementado um web service SOAP, utilizando a biblioteca do python soaplib. Este Web service obtém a hora actual e retorna a hora do próximo autocarro para a paragem pretendida.
. Scrapper
. Geo Localização - Concluí...
. Geo Localização - Cliente...
. Equipa e atribuição de ta...