scrapy
Neste pacote, os módulos foram criados seguindo do modelo do Scrapy, a fim de manter um padrão de documentação e uso.
A única novidade é o módulo denominado readers.py,
onde existe uma função criada para ler fontes de dados de blobs na Azure.
items.py
pipelines.py
- class themispy.project.items.AzureBlobUploadPipeline
Classe criada a fim de subir arquivos para o Azure Storage. Extende a classe ‘Spider’ padrão do Scrapy.
- blob_client
Cliente de conexão com um Blob no Azure Storage. O Blob não precisa existir previamente. Para que o cliente possa ser criado, são necessários:
conn_str,container_name,blob_name. Também, por padrão,logging_enablepossui o valorTrue.
- content
String vazia que será preenchida, linha a linha, com o dicionário será retornado da sentença
yieldna construção da Spider.
- open_spider(self, spider)
Neste método será criada a conexão com o Blob e também inicializado atributo
content.
- process_item(self, item, spider)
Aqui será processado o retorno dos dados do crawler e convertido para
.jsonl.
- close_spider(self, spider)
É aqui, durante o encerramento da spider, que o todo o conteúdo gerado durante o processamento será enviado para o Azure Storage, através do método
upload_blob. Por padrão, será passado como argumentooverwrite=True.
- class themispy.project.items.AzureFileDownloaderPipeline
Classe extendida a partir da classe
FilesPipelinedo Scrapy. É utilizada para se baixar arquivos (os quais são fornecidas suas URLs de download). Os arquivos são enviados diretamente para o Azure Storage.Nota
Não esquecer de passar nas configurações do Scrapy a chave
FILES_STORE.- spiderinfo
Informações da spider que serão necessárias para o registro do status de download dos arquivos.
- container_client
Cliente de conexão com um container no Azure Storage. O Container precisa existir previamente. Para que o cliente possa ser criado, são necessários:
conn_strecontainer_name. Também, por padrão,logging_enablepossui o valorTrue.
- blob_client
Cliente de conexão com um Blob no Azure Storage. O Blob não precisa existir previamente. Para que o cliente possa ser criado, é necessário passar o nome do
blobque será criado.
- open_spider(self, spider)
É durante a abertura da spider que a conexão com o container é criada. Dessa maneira, independentemente de quantos arquivos serão baixados, apenas uma conexão com o container é criada.
- file_downloaded(self, response, request, info, *, item=None)
É precisamente neste método, exatamente no momento em que os dados do arquivo baixado estão em memória, que é criado um cliente com o Blob e o arquivo é subido no Azure Storage. Por padrão, é passado ao
upload_blobo argumentooverwrite=True.
readers.py
- themispy.project.readers.list_blob_content(url: str, encoding: str = 'UTF-8', logging_enable: bool = True) list[str]
Lê o conteúdo do blob em questão, convertendo para lista utilizando as quebras de linhas.
- Parâmetros
url (str) – Caminho completo do blob dentro da Azure. Exemplo:
https://<nome_do_storage>.blob.core.windows.net/<container>/meu_arquivo.jsonl.encoding (str) – Formato de codificação dos caracteres. (
UTF-8é o padrão.)logging_enable (bool) – Indica se a função deverá ativar o logger ou não. (Padrão é
True.)
- Retorna
Conteúdo do blob como lista de strings.
spiders.py
- themispy.project.spiders.run_spider(spider: scrapy.Spider, pipeline: str = None, settings: dict = None, override: bool = False) None
Processo para executar spiders.
- Parâmetros
spider (scrapy.Spider) – Spider a ser executada.
pipeline (str) – Pipeline a ser utilizada durante a execução da spider. Deve ser
bloboudownload. Referindo, respectivamente, as pipelines de AzureBlobUpload ou AzureFileDownloader.settings (dict) – Configurações do Scrapy para a execução das spiders. Passe aqui suas configurações personalizáveis para serem adicionadas às padrões.
override (bool) – Caso seja
True, as configurações recebidas sobrescreverão todas as anteriores.