Pra vocês terem uma ideia de como o parto é usado no mundo real, eu trouxe pra vocês aqui o Felipe Bergson. Que é programador com bastante experiência desenvolvimento de Software e particular na linguagem Python. O Bergson ele fez Sistema de Informação aqui na EACH na Usp depois Mestrado Ciência da Computação e depois tem trabalhado várias empresas e muitas Startups fazendo produtos inovadores aí bem interessantes, particular, agora ele trabalha numa Startup fundada pra alguns ex-alunos aqui da USP, a Word Packers e é uma Startup Global aí que tá crescendo bastante mas o que o Felipe vai mostrar pra gente é como escrever programas Python que se comportam como se fossem pequenos robôs que visitam páginas da Web coletando informações interessantes. Felipe você já usou esse tipo de tecnologia pelo menos duas empresas, né. Que tipo de coisas que vocês faziam lá. Isso mesmo, na primeira empresa eu usava esse tipo de tecnologia pra extrair preços de concorrentes num ecomerce, uma loja virtual pra inteligência de mercado. Na outra empresa, a gente eu usava o webcrawlers pra extrair informações da comunidade dados de usuários, locais, que seriam uteis pra a gente aumentar nossa base de usuários dentro da empresa. Tá, essa primeira empresa de ecommerce ele visitava os sites dos concorrentes pra ver os preços dos concorrentes e daí definir os preços que eles iam praticar exatamente a gente coletava o preço de N concorrentes e comparava com superior ou inferior ao nosso preço de precificação. Tá, então você vai mostrar pra gente como algo semelhante a isso pode ser feito, né todo seu. Bom, começar a definir então o que seria webcrawling a principal porta de entrada da internet diariamente a gente acessa o google pra aprender uma coisa nova, mas já parou pra pensar como como que o google mantém a sua busca sempre atualizada o Web Crawling é a resposta disso O Web Crawling é processo de extração de informação, que começam com os spiders programas automatizados que ficam o tempo todo acessando sites novos e conteúdos novos de sites já existentes pegando essas informações, estruturando-as e armazenando grandes bases de dados que são portanto depois consultadas por sistemas de busca como o próprio google pra disponibilizar essa informação na web. O Scrapy é uma ferramenta Python, de código aberto, ideal pra fazer Web Crawling. O Scrapy possui media faces simples pra definir seus próprios Spiders, estruturar o conteúdo extraído e também distribuir essas spiders pra serem executadas e também distribuídas na nuvem e nesse modulo vocês vão aprender a desenvolver seu próprio spider. Para desenvolver nosso spider, eu vou usar exemplo real. A página da Virada Cultural Paulista A Virada Cultural Paulista acontece varias cidades do interior de São paulo e são várias atrações diversas cidades como você pode ver nesta página. Imagina que você trabalha numa empresa que desenvolve algorítmo de busca e precisa extrair essas informações ou ainda que você esta desenvolvendo uma aplicação global uma aplicação para celular e você quer ter essas informações da programação pra você consultar no celular. Para ambos os casos a gente tem que desenvolver spider que pega essas informações, então basicamente nosso spider vai navegar sobre essa página, clicar cada uma das cidades e extrair essas informações o dia, a hora, a atração, o lugar, e o artista que estará apresentando aquela atração bom vamos começar, o primeiro passo é instalar o Scrapy. Scrapy é instalado assim como qualquer outra dependência Python, usando gerenciador de pacotes pip. A seguir a gente tem que criar o nosso projeto, que é simplesmente criado meio dessa chamada scrapy startproject scrapy_cultural_sp. Seguida, quando você cria o projeto, ele tem essa estrutura. Aqui a gente pode ver que nesse arquivo tem umas das configurações dos diploides sobre spider na nuvem aí tem os ponto py, guarde seus modelos de dados, que seriam abstrações daquilo que você tá extraindo se você tiver fazendo spider que acesse uma loja virtual de livros por exemplo o seu modelo seria livro, no nosso caso como estamos extraindo informações de atrações artísticas da virada cultural, nosso modelo seria uma atração artística por exemplo pipelines.py contém classes que são executadas sequência na execução do spider por meio de spotlines você consegue definir, configurar o Scrapy pra armazenar num banco de dados aquilo que você tá extraindo automaticamente. Settings contém informações gerais do projeto e nessa pasta spiders ficam propriamente os spiders a gente vai começar nosso exemplo definindo então nosso modelos de dados o caso aqui eu estou procurando uma classe Python que herda esse projeto do proprio scrapy, o nome dela é atração e ela tem vários campos, que seriam os campos que a gente quer extrair dessas informações, dessas atrações artísticas. Então a gente tem a cidade, o endereço, a hora e o artista. A seguir a gente começa a criar o nosso spider o spider também é uma classe Python, simples só que herda essa outra classe chamada CrawlSpider, que seria uma classe do próprio Scrapy. Para spider a gente tem que definir o seu nome, no caso virada cultural e a url de início. A url de início seria a primeira URL que nosso programinha, nosso spider vai acessar pra extrair as informações que a gente precisa. A seguir a gente tem que definir esse método Parse, método obrigatório no Scrapy, esse método Parse vai ser o primeiro método chamado por Scrapy mas ele funciona no nosso spider. Vai funcionar da seguinte forma, nosso spoiler vai acessar essa Url, fazer uma requisição que tem como conteúdo uma resposta que tem conteúdo html das informações que a gente precisa e passar essas informações por método Parse. Então basicamente nosso método Parse vai ter que lidar com o Html pra extrair as informações que a gente precisa. Pra tratar esse Html detonado a gente vai usar Xpath que é uma linguagem de navegação e documentos Html. Aqui a gente pode ver código Html e o equivalente Xpath, se eu quiser Xpath então pegar esse link, esse conteúdo desse link Html, eu faria a seguinte chamada: eu distanciaria então Div, mas não todos os elementos div Html, div cuja classe é list-cities que tem como filho elemento ul na lista que tem elementos li e por fim tem o link. Ao fazer essa chamada Xpath, eu tenho uma lista de elementos Html. O Scrapy ele é muito fácil pra você abrir pro Xpath, eu vou mostrar como introduzindo a maior ferramenta do Scrapy, chamada Scrapy Shell. Scrapy shell é uma ferramenta console interativo que permite você treinar, testar comandos Xpath na página que você tá extraindo para usar o scrapy shell, basta você ir no seu terminal, uma vez que você tiver instalado o scrapy e fazer a seguinte chamada, Scrapy shell e a Url que você quer avaliar, estudar os comandos xpath. No nosso caso seria a própria home page da virada cultural paulista. Ao fazer isso o Scrapy entra nesse modo, nesse console interativo e faz uma requisição pra aquela Url e nos retorna uma resposta por isso a gente vê aqui response, a gente tem uma resposta, essa aqui é uma resposta de uma http, simples, ela tem status, ela tem conteúdo, o conteudo como vocês podem ver é Html. Esse Html que a gente vai ter que tratar via xpath vai extrair as informações que a gente precisa. Uma forma de fazer isso no Scrapy é usando seletores que é uma estrutura de dados do próprio Scrapy que abstrai, incapsula o código do Html e aplica xpath nele. Para usar é bem simples, eu começo importando então os seletores para o nosso console interativo e eu vou criar novo seletor. Repare que o seletor ele recebe objetos response, ao fazer isso eu tenho então seletor estanciado e vou poder aplicar Xpath naquele conteúdo Html. Eu vou fazer a mesma chamada que eu mostrei nos slides, que seria pegar os divs onde a classe é list-cities, que tenha uma lista de elementos e tenha os links ao fazer isso eu tenho uma lista de seletores. Como que eu tenho uma lista de seletores? O Html, ele é uma estrutura recursiva por exemplo, se você tem elemento div e pega o filho desse elemento div que no caso é uma lista, ele também é elemento Html que é possível de ser aplicado Xpath. Então se eu quiser pegar o conteúdo html mesmo eu uso essa função chamada extract do próprio xpath, do próprio Scrapy. Repara então que eu tenho agora o conteúdo Html da página, que são todas as da homepage. O legal do xpath é que você consegue pegar informações específicas de cada elemento Html, então por exemplo, eu eu quiser pegar o texto dos nics, ou seja, aquilo que é mostrado pro usuário na página, eu posso fazer por meio dessa chamada, eu tenho portanto todos os nomes das cidades. Se eu quiser pegar os links das Urls eu, uso essa seguinte propriedade a href, eu tenho os links das páginas. Bom, pra esse módulo a gente fica por aqui, no próximo módulo a gente vai percorrer cada desses links e fazer uns Scrapys, extrair as informações das atrações artísticas de cada uma dessas cidades. Pro próximo módulo vocês podem então instalar o Scrapy, acessar uma url, treinar xpath que nosso próximo módulo vocês vão precisar disso. Até lá. [MÚSICA] [MÚSICA]