Closed brunolellis closed 6 years ago
Consegui evoluir com o crawler do Rio de Janeiro, mas parei no seguinte problema: A URL para download do pdf é a seguinte: http://doweb.rio.rj.gov.br/ler_pdf.php?download=ok&edi_id=3651
Investigando os response headers, o servidor envia o nome do arquivo final no cabeçalho 'Content-Disposition' e, aparentemente, o scrapy está ignorando esta informação e salvando o pdf com o seguinte nome:
4f15e18052b51dd8dffad1cc243279f40a2e21c3.php?download=ok&edi_id=3651
E isto ocasiona o seguinte problema na conversão para texto:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/twisted/internet/defer.py", line 653, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "/mnt/code/data_collection/gazette/pipelines.py", line 13, in process_item
item['source_text'] = self.pdf_source_text(item)
File "/mnt/code/data_collection/gazette/pipelines.py", line 28, in pdf_source_text
with open(text_path) as file:
FileNotFoundError: [Errno 2] No such file or directory: '/mnt/data/full/4f15e18052b51dd8dffad1cc243279f40a2e21c3.php?download=ok&edi_id=3651.txt'
@Irio, por favor, alguma ideia pra resolver isto?
Achei uma luz.
Veja este trecho do código do scrapy, onde ele monta o nome do arquivo (media_ext
)
aqui.
No exemplo citado acima, retorna: '.php?download=ok&edi_id=3651'
Talvez uma opção seja implementar algo semelhante e ignorar os query params.
@brunolellis: tem um PR para corrigir isso no Scrapy desde julho/2017. Há uns dias foi colocado no pipeline para a versão 1.6…
@rennerocha: desculpe te marcar de surpresa aqui, mas tu tem ideia de alguma forma limpa, simples e eficiente de resolver isso enquanto a v. 1.6 não vem?
@cuducos, o que você acha dessa implementação? https://github.com/okfn-brasil/diario-oficial/compare/master...brunolellis:fix/15-scrapy-media-ext?expand=1
Basicamente, é a solução proposta no PR que você citou.
obrigado!
Parece interessante : )
Olá Pessoal, Meu nome é Lucas Armand. Gostaria de contribuir no projeto da implementação para a Cidade do Rio de Janeiro.
@Lucas-Armand, o crawler já está feito (como mostra o CITIES.md
), mas vc pode tocar o parser se quiser ; )
Ok, me proponho, então, a fazer o Parse.
Iniciei uma implementação da cidade do Rio de Janeiro. Pareceu trabalhosa inicialmente, mas acho que consegui mapear todas as situações.
O que desenvolvi por enquanto: https://github.com/brunolellis/diario-oficial/blob/rj_rio_de_janeiro/processing/data_collection/gazette/spiders/rj_rio_de_janeiro.py
DO: http://doweb.rio.rj.gov.br