O desafio consiste na implementação de um crawler que colete e armazene citações do site http://quotes.toscrape.com.
Utilizando o framework Scrapy, desenvolva uma robô que visite o site citado anteriormente, colete todas as citações exibidas nas páginas e armazene no MongoDB.
- Para cada citação, os seguintes dados devem ser coletados: citação (string), autor (dictionary) com seu nome(string) e url da sua bio (string) e tags (array).
- Deve utilizar o pipeline do Scrapy para salvar cada item no banco de dados.
- Enquanto houver paginação, o crawler deve continuar coletando e armazenando os dados.
- No final, os dados devem estar armazenados no MongoDB no banco de dados quotestoscrape e na collection seunome_seusobrenome.
As seguintes perguntas devem ser respondidas através de queries no MongoDB:
- Quantas citações foram coletadas?
- Quantas tags distintas foram coletadas?
- Quantas citações por autor foram coletadas? (exemplo abaixo)
Obs.: Salve suas queries em .js e envie-as junto do projeto no github.
- Utilize a versão mais recente do Python (https://www.python.org/)
- Leia a documentação do Scrapy e faça o exemplo inicial para se familiarizar com o framework.
- Leia sobre agregações no MongoDB.
- Atente-se aos tipos de dados exigidos para cada campo.
Cada citação deve ser salva no MongoDB seguindo o seguinte formato:
{
"_id" : ObjectId("5fcf74d9439554bbdaf8da5d"),
"title" : "“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”",
"author" : {
"name" : "Albert Einstein",
"url" : "http://quotes.toscrape.com//author/Albert-Einstein"
},
"tags" : [
"change",
"deep-thoughts",
"thinking",
"world"
]
}
Tudo pronto? Basta criar um fork deste repositório e abrir um pull request quando finalizar ;)
Em caso de dúvidas, envie um e-mail pra gente: [email protected]