• Nenhum resultado encontrado

O Python é uma linguagem de programação interpretada e orientada a objetos, criada no final da década de 80, pelo holandês Guido van Rossum. Foi criada com o foco no programador, visando, como objetivo principal, a produtividade. Segundo Menezes (2010), é uma linguagem interessante para iniciantes por ser clara e objetiva, porém mesmo

assim poderosa.

Além de ter aplicabilidade em diversas áreas, desde inteligência artificial, apli-cações matemáticas, indo para biotecnologia e até apliapli-cações móveis/web, é conhecida por ter "batteries included"(baterias inclusas), fazendo referência a ser um "produto com-pleto"(MENEZES, 2010).

Python possui uma comunidade muito forte, com muitas bibliotecas e informação disponível para desenvolvimento, e, na atualidade, é uma das linguagens mais populares no mercado. Além disso, está presente em diversas aplicações, de gigantes como Google, Dropbox, Youtube e Instagram.

Por esses motivos e mais, foi a linguagem escolhida para ser usada neste projeto, principalmente por se tratar de uma linguagem extremamente versáti, fácil de aprender/de-senvolver, e possuir todas as bibliotecas e frameworks necessários para o desenvolvimento do mesmo.

4.1.1 Regex

Regex é a abreviação deRegular Expressions. Expressões regulares são utilizadas para encontrar padrões dentro de qualquer cadeia de caracteres, como por exemplo um texto, ou no caso específico do projeto apresentado neste trabalho, cadeias de caracteres contidas dentro de códigos HTML de páginas na web.

Em suma, são uma notação que permite descrever, de maneira resumida, usando símbolos específicos, palavras, conjuntos de expressões e até linguagens inteiras. As expressões são usadas em diversos contextos, tanto nas áreas acadêmicas e de pesquisa, descrição de linguagens, até no meio de desenvolvimento de software, que é o contexto no

qual esse trabalho se insere.

Segundo (KUCHLING, 2022), na documentação oficial da biblioteca de regex em Python, expressões regulares são essencialmente uma mini linguagem de programação altamente especializada incluída dentro da própria linguagem e disponível através do módulo re. Usando esta pequena linguagem, especificam-se as regras para o conjunto de strings possíveis que se quer combinar, e então, entre outras coisas, pode se utilizar para verificar se strings batem com o padrão, ou converter strings existentes para o padrão estabelecido.

No contexto deste trabalho, as regex são usadas como input do usuário, para permitir que o mesmo filtre a informação que se pretende captar daweb, de forma que seja capturado apenas o dado que é de interesse desse usuário, e seja eliminada a "sujeira"ao redor desses dados.

4.1.2 Beautifulsoup

De acordo comCrummy (2020), na documentação oficial, Beautiful Soup é uma biblioteca Python para extrair dados de arquivos HTML e XML. Ela funciona em cima de um parser (analisador), de forma que, ao recuperar, por exemplo, o HTML de um site, seja possível modificar a árvore de análise (desse parser), para extrair exatamente os dados desejados de dentro da página.

Uma das grandes vantagens desse biblioteca é a simplicidade de implementação e o alto desempenho. É possível, através dela, coletar dados de maneira rápida e efetiva, economizando muito tempo de desenvolvimento. Apesar disso, caso o site utilize muitas funções com JavaScript e disponibilize seus dados através dessa tecnologia, de maneira dinâmica, essa não é a ferramenta indicada para o trabalho. O foco é, de fato, nas páginas estáticas, com conteúdo disponível diretamente no HTML.

Neste trabalho, essa biblioteca integrará o motor de raspagem de páginas web estáticas do microserviço. Sua escolha foi feita devido a grande facilidade de implementação, alto desempenho para páginas estáticas e a disponibilidade e integração com a linguagem Python.

4.1.3 Selenium

Selenium é um projeto abrangente para uma variedade de ferramentas e bibliotecas que permitem e dão suporte à automação de navegadores da web (SELENIUM, 2020).

Entre elas, e para este trabalho, a mais importante é sem dúvidas o Selenium WebDriver.

Apesar de ser normalmente utilizada para testes de aplicações web, simulando um

usuário real, o Selenium, no contexto desse trabalho, é usado para auxiliar na realização de web scraping. Com a ajuda do Selenium, é possível acessar uma página através de um "navegador"(webdriver), o que nos dá acesso a essa página da mesma forma que uma pessoa a veria, caso acessasse normalmente através de seu navegador.

O Selenium possibilita a raspagem de sites "dinâmicos", visto que esses sites preenchem valores/dados utilizando JavaScript, de forma que esses dados não ficam disponíveis de maneira direta no HTML da página. Uma vez dentro da página, com o javascript executado e os valores/dados devidamente preenchidos, a recuperação desses dados já pode ser feita, assim como a de um site estático comum.

Apesar do desempenho menor em relação ao Beautifulsoup, sites dinâmicos que disponibilizam informação através de JavaScript são cada vez mais e mais comuns, e portanto, cobrir esse tipo de sites na raspagem de dados se torna extremamente relevante.

Além disso, por ser muito popular, e estando disponível para uso com a linguagem Python, a adoção do Selenium para o trabalho ocorreu de forma natural.

A biblioteca será usada especificamente na etapa de extração de valores em sites dinâmicos, onde houver necessidade de um navegador para fazer a execução de códigos em JavaScript ao extrair os dados. Integrará o motor de raspagem em sites dinâmicos.

4.1.4 Flask

Flask é, segundo sua documentação oficial, umframeworkleve (também considerado um micro-framework) em python, destinado a aplicações web, desenhado para ser de aprendizado rápido, de forma que seja possível iniciar o desenvolvimento e já ter uma aplicação funcional muito rápido, porém mantendo a capacidade de escalar para aplicações grandes e complexas (PALLETS PROJECTS, s.d.).

Por ser de início rápido e simplificado, é bastante indicado para aplicações simples, que não precisam de funcionalidades extremamente complexas, como por exemplo, pequenos sites e APIs REST. Além disso, apesar de sugerir padrões de estrutura de projeto e dependências, nada é forçado, e no fim, todas as decisões de como será a aplicação desenvolvida fica a cargo do desenvolvedor.

Por conta das vantagens citadas acima, da facilidade de desenvolvimento e a ausência da necessidade de uma aplicação complexa em termos de front-end, o Flask foi escolhido e será utilizado em todas a APIs existentes nos sistemas, trabalhando tanto de forma integrada com o Apache2, como também de forma isolada.

4.1.5 Módulo WSGI

O WSGI (Web Server Gateway Interface), trata-se de uma especificação de interface, que descreve como deve ocorrer a comunicação entre os servidores web e aplicações escritas em Python, além de como é possível encadear aplicações para responder a uma requisição (WSGI, 2021).

No contexto deste projeto, nos referimos ao módulo, que permite a comunicação entre o servidor e a aplicação. Sem ele, não seria possível servir uma aplicação web escrita em python, uma vez que os servidores não entendem a linguagem de maneira nativa.

O grande benefício de usar o WSGI, é que já existem servidores bastantes eficientes e com suporte nativo, fazendo com que o foco possa ser todo colocado no desenvolvimento da aplicação em sí. Além disso, o framework web escolhido para o projeto (Flask), assim como muitos outros, segue a especificação WSGI, fazendo o uso desse módulo o padrão para deploy de diversas aplicações, e uma escolha natural para este projeto.

Documentos relacionados