O objetivo do trabalho é o de criar uma aplicação que integre duas linguagens de programação diferentes. Para o projeto, as linguagens escolhidas foram o C++ e Python3
Como tema do trabalho, decidimos implementar um programa para fazer web scraping em sites de compras online (amazon, americanas e submarino).
Versão do Python: 3.8
Versão do C++: 11
Instalar: python3.8-dev
$ sudo apt-get install python3.8-dev
Bibliotecas do python:
$ pip3 install requests_html
$ pip3 install lxml
$ pip3 install beautifulsoup4
Para executar o programa, siga esses passos:
- Make
$ make webScraping
- Executar
$ ./webScraping
- Comando extra
$ make clean
O programa está dividido em duas partes principais: o sistema de coleta e o sistema de gerenciamento das informações. O primeiro sistema foi implementado em python, enquanto o segundo em c++. A figura abaixo ilustra o funcionamento do sistema:
O sistema de gerenciamento foi feito em C++. Ele é baseado na classe Product que guarda as informações mais relevantes do produto (seu nome, preço, url e a loja). Baseado nisso, o programa tem 5 funções principais.
- Busca por produto
Nessa opção, o usuário irá entrar com um produto e uma faixa de preço. Essas informações serão passadas para o sistema de coleta (feito com o python3). Em seguida, o sistema de coleta irá retornar os resultados da busca para o programa gerenciador, no qual ele irá filtrar todos os dados e, por fim, irá retornar somente um único produto para o usuário. O resultado pode ser adicionado na lista de desejos.
- Ver lista de produtos
Essa opção funciona de maneira similar a descrita anteriormente. A principal diferença é que, em vez do usuário fazer uma busca entre todas as lojas e receber somente um único resultado, ele irá buscar por um produto em uma loja específica e receberá várias resultados da pesquisa. O usuário poderá adicionar qualquer um dos resultados na lista de desejos.
- Configurar lojas
Essa opção serve para que o usuário possa escolher quais são as lojas que serão utilizadas na busca do item 1 .
- Comparação de preços entre lojas
Nessa opção, o usuário poderá comparar o preço de um produto entre 2 lojas. Cada loja irá retornar um resultado. Qualquer um dos dois resultados pode ser adicionado para a lista de desejos.
- Lista de desejos
A lista de desejos é um local no qual o usuário poderá salvar produtos de seu interesse. Nessa opção, ele pode remover qualquer produto que não queira mais. A persistência dos dados será feita através do arquivo 'wishList.csv'.
O sistema de coleta é feito em python. Ao utilizar a biblioteca BeautifulSoup, é possível fazer uma requisição para uma página web, no qual será retornada o html da página. Depois disso, o próprio sistema de coleta irá filtrar pelos dados de nome do produto, preço e o link. O arquivo .py irá receber dados como: o nome do produto e a loja. Ele irá retornar uma tupla com todos os produtos que se enquadram no que foi pedido.