Segunda-feira, 20 de Dezembro de 2010
Scrapper

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.

 

  1. scrapy.cfg (ficheiro de configuração do projecto)

  2. horarios/ (módulo de python do projecto)

  3. horarios/items.py (define os items a construir)

  4. horarios/pipelines.py (ficheiro de pipelines do projecto)

  5. horarios/settings.py (ficheiro de propriedades do projecto)

  6. 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:

 

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.

 

 

 

 




Comentar:
De
Nome

Email

Url

Guardar Dados?



Email

Password



Comentário

Máximo de 4300 caracteres




.mais sobre mim
.pesquisar neste blog
 
.Dezembro 2010
Dom
Seg
Ter
Qua
Qui
Sex
Sab

1
2
3
4

5
6
7
8
9
10
11

12
13
14
15
16
17
18

19
21
22
23
24
25

26
27
28
29
30
31


.posts recentes

. Scrapper

. Geo Localização - Concluí...

. OpenIMS <-> Sailfin

. Geo Localização - Cliente...

. Estou? Hey Bob é a Alice!

. Equipa e atribuição de ta...

. Arquitectura do Sistema

. Hello World

.arquivos

. Dezembro 2010

. Novembro 2010

. Outubro 2010

.tags

. todas as tags

.participar

. participe neste blog

blogs SAPO
.subscrever feeds