| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repositório do conteúdo ministrado na live de Python Fundamentals da 4Linux no dia 22/04/2020.
Para este conteúdo, basta ter instalado o python3 e o gerenciador de pacotes pip. Não é necessário uma IDE completa para este laboratório, um editor de texto puro simples já basta. Lembrando que o editor de código é sempre uma preferência do programador em questão.
Os pacotes instalados estão no arquivo requirements.txt.
A ideia da live é demonstrar como um ferramental básico de python nos ajuda a resolver tarefas interessantes como o web scraping.
O Web Scraping é uma técnica de coleta de dados não estruturados disponíveis na web. Basicamente, trata-se de um acesso automatizado para coletar informações presentes no html dos sites.
Existem inúmeras aplicações de web scraping, a saber algumas delas:
O desafio proposto na live era estruturar os dados de projetos de lei disponíveis no website da Assembléia Legislativa de São Paulo - ALESP.
O script contido na pasta 1 tem como objetivo explorar o webscraping - partiremos de uma descrição detalhada do que é preciso fazer para:
Para esta tarefa, será necessário utilizar o pacote urllib nativo do python para realizar uma requisição de uma página na web
Utilizar de contextos para ter uma requisição e leitura dos dados bem sucedida.
Utilizar a biblioteca bs4 para realizar o parsing da estrutura html do site de modo que seja possível navegar entre os objetos. Neste caso, o BeautifulSoup cria uma estrutura de objetos semelhante a uma árvore - os objetos são as tags html, as quais podem possuir outras tags, podem possuir texto e atributos.
Nesta etapa, será necessário verificar como acessar objetos e estruturas básicas como listas e dicionários no python para navegar até o conteúdo de interesse.
Após o filtro bem sucedido das informações, armazenar os dados em um dicionário - uma estrutura bem próxima ao formato JSON - Javascript Object Notation.
Com o êxito no na coleta de um projeto de lei (PL), a ideia é repetir o processo para coletar um volume maior de PLs. Para tal precisaremos:
Neste caso, será necessário identificar no html em que parte do site contém os links para os PLs de um determinado ano
A partir da lista de links, criar um laço para extrair as informações de interesse. Por questões de tempo, resolvi pegar apenas os 100 primeiros PLs.
Você deve ter percebido que o código está em um único arquivo base. Por mais que seja uma quantidade pequena de código, as responsabilidades são diferentes - o primeiro tem como objetivo extrair dados da PL em si, e o outro tem como objetivo mapear os links disponíveis.
Nesse sentido, por que não modularizar o código em scripts diferentes, e utilizar um terceito script que conduza o fluxo da atividade?
Para resolver esse problema, será necessário conhecer sobre modulos e pacotes em python.
Ao final da parte 2, teríamos uma lista com 100 projetos de lei no formato desejado. Há diversas formas de persistir essa informação para uso posterior:
Para resolver essa etapa, recomendo a utilização de pacotes como:
Se você estiver bem atento, perceberá que as urls possuem proposições da câmara, e normativas diretas do executivo, na figura do governador. Caso as estruturas de html forem diferentes, como compatibilizar os scripts para lidar com ambos os casos?
Além das informações básicas dos projetos de lei, temos um segundo bloco na página que indica a tramitação do projeto na camara. Poder-se-ia adicionar tais informações no dicionário que criamos, na forma de um sub-documento:
pl = {
"num_legistativo" : "",
"ementa" : "",
"data_publicacao" : "",
"regime" : "",
"autores" : "",
"apoiadores" : "",
"indexadores" : "",
"etapa_atual" : "",
"tramitacao" : {
"datas" : [],
"descricao": []
}
}Pede-se para verificar os casos inconsistentes, e adicionar a estrutura de tramitação no dicionário conforme o exemplo acima.
Se você se interessou em saber mais sobre python, a 4Linux oferece cursos de python em diversas áreas - sysadmin, desenvolvimento e big data. Para maiores informações acesse:
| Back | FazBrowse Home | New Git URL |