diff --git a/docs/source/escrevendo-um-novo-spider.rst b/docs/source/escrevendo-um-novo-spider.rst index 4ffb9738..b2b1c959 100644 --- a/docs/source/escrevendo-um-novo-spider.rst +++ b/docs/source/escrevendo-um-novo-spider.rst @@ -95,8 +95,110 @@ fora do período desejado. Algumas dicas ------------- -- Durante o desenvolvimento, para evitar que você faça chamadas repetidas nas páginas das cidades é possível utilizar a configuração `HTTPCACHE_ENABLED`_ do Scrapy. Isso também faz com que as execuções sejam mais rápidas, já que todos os dados ficam armazenados localmente -- O `shell`_ do Scrapy ajuda muito na hora de testar seletores CSS e XPath +Logicas de spiders já estabelecidas +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Antes de começar a analise do site, vale a pena verificar se por a caso a logica dele já foi trabalhada em alguma das nossas ``class`` preestabelecida. + +Elas são: + +- `Aplus`_ +- `Doem`_ +- `Dosp`_ +- `Fecam`_ +- `Imprensa-Oficial`_ +- `instar`_ +- `Sigpub`_ + + +Analise se o dominio do site se encaixa em algum deles. + +Como os diarios de Nossa Senhora do Socorro ``https://doem.org.br/se/nossasenhoradosocorro/diarios`` que tem o dominio ``Doem`` o qual você vai encontrar um ``class`` que trabalha esse sistema em `Doem`_. + +*Onde se encontra:* + +.. code-block:: sh + + /data_collection/gazette/spiders/base + + +*Exemplo de como utilizar:* + + +Basicamente localizado uma ``class`` que você pode estar utilizando na sua spider. + +Basta criar uma novo arquivo dentro de: + +.. code-block:: sh + + /data_collection/gazette/spiders + + +Import a ``class`` selecionada para o arquivo spider que esta trabalhando. Normalmente import ``date`` de ``datetime`` para preencher ``start_date`` + +.. code-block:: python + + from gazette.spiders.base.doem import DoemGazetteSpider + from datetime import date + +Crie uma nova ``class`` com a class preestabelecida selecionada como herança (``DoemGazetteSpider`` no nosso exemplo). + +.. code-block:: python + + class BaAcajutibaSpider(DoemGazetteSpider): + TERRITORY_ID = "2900306" + name = "ba_acajutiba" + start_date = date(2018, 1, 2) + state_city_url_part = "ba/acajutiba" + +Exemplo do Script completo ➡️ `Link`_ + + +Tempo de coleta +^^^^^^^^^^^^^^^ + +Cuidado com o tempo que as vezes o spider leva para realizar toda a operação. As vezes é necessario notificar isso no seu PR, para uma mudança no disparador de rotina dessa spider. + +**O tempo limite de coleta é de 1 hora nas rotinas de coleta** + +Spiders com mais de um site de coleta +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Bom verificar se todos os diarios estão disponiveis em um ou mais sites. Caso esteja em mais de um site, tome a abordagem que se encontra aqui ➡️ `849`_ + +HTTPCACHE_ENABLED +^^^^^^^^^^^^^^^^^ + +Durante o desenvolvimento, para evitar que você faça chamadas repetidas nas páginas das cidades é possível utilizar a configuração `HTTPCACHE_ENABLED`_ do Scrapy. Isso também faz com que as execuções sejam mais rápidas, já que todos os dados ficam armazenados localmente + +*Exemplo:* + +Primeiro vã no diretorio abaixo. Onde você iria encontrar algumas configuraçoes do Scrapy. + +.. code-block:: sh + + /data_collection/gazette/settings.pys + +Dentro do arquivo ``settings.pys``. Crei uma nova linha e insira ``HTTPCACHE_ENABLED = True`` como no exemplo: + +.. code-block:: python + + import pkg_resources + from decouple import config + + BOT_NAME = "gazette" + SPIDER_MODULES = ["gazette.spiders"] + NEWSPIDER_MODULE = "gazette.spiders" + ROBOTSTXT_OBEY = False + + HTTPCACHE_ENABLED = True + +Para desativas, apenas apague a linha do ``HTTPCACHE_ENABLED = True`` ou a troque por ``HTTPCACHE_ENABLED = False`` + +Shell +^^^^^ + +O `shell`_ do Scrapy ajuda muito na hora de testar seletores CSS e XPath Submetendo um novo PR --------------------- @@ -113,5 +215,17 @@ Sugestões de verificações: - Se ao executar o spider mais de uma vez, os resultados são os mesmos; - Se não existem erros de execução (`log/ERROR` nas estatísticas do spider); +.. _Link: https://github.com/Winzen/querido-diario/blob/doc-changes/data_collection/gazette/spiders/ba_acajutiba.py + +.. _849: https://github.com/okfn-brasil/querido-diario/pull/849 + +.. _Aplus: https://github.com/okfn-brasil/querido-diario/blob/main/data_collection/gazette/spiders/base/aplus.py +.. _Doem: https://github.com/okfn-brasil/querido-diario/blob/main/data_collection/gazette/spiders/base/doem.py +.. _Dosp: https://github.com/okfn-brasil/querido-diario/blob/main/data_collection/gazette/spiders/base/dosp.py +.. _Fecam: https://github.com/okfn-brasil/querido-diario/blob/main/data_collection/gazette/spiders/base/fecam.py +.. _Imprensa-Oficial: https://github.com/okfn-brasil/querido-diario/blob/main/data_collection/gazette/spiders/base/imprensa_oficial.py +.. _instar: https://github.com/okfn-brasil/querido-diario/blob/main/data_collection/gazette/spiders/base/instar.py +.. _Sigpub: https://github.com/okfn-brasil/querido-diario/blob/main/data_collection/gazette/spiders/base/sigpub.py + .. _shell: https://docs.scrapy.org/en/latest/topics/shell.html -.. _HTTPCACHE_ENABLED: https://docs.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-enabled \ No newline at end of file +.. _HTTPCACHE_ENABLED: https://docs.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-enabled