SlideShare a Scribd company logo
1 of 45
Download to read offline
Construindo Crawler Na Web
    Feito Gente Grande


    Apresentando o Scrapy

         Bernardo Fontes
            @bbfontes
@bbfontes – bernardofontes.net – falecomigo@bernardofontes.net
O que é um web crawler?
O que é um web crawler?

                  “Web crawler é um
               programa de computador
               que navega pela World
               Wide Web de uma forma
                      metódica e
                    automatizada”


http://pt.wikipedia.org/wiki/Web_crawler
Estrutura básica de um web
          crawler
Estrutura básica de um web
          crawler
●   Construção de requisições HTTP
Estrutura básica de um web
          crawler
●   Construção de requisições HTTP
●   Tratamento da resposta
    ●   Composição de objetos
    ●   Composição de novas requisições
Estrutura básica de um web
          crawler
●   Construção de requisições HTTP
●   Tratamento da resposta
    ●   Composição de objetos
    ●   Composição de novas requisições
●   “Persistência” de dados
Web crawling em Python

●   Tecnologias comuns:
    ●   urllib, httplib2, requests
Web crawling em Python

●   Tecnologias comuns:
    ●   urllib, httplib2, requests
    ●   beautifulsoup ou lxml
Web crawling em Python

●   Tecnologias comuns:
    ●   urllib, httplib2, requests
    ●   beautifulsoup ou lxml
    ●   json, pickle, yaml, sqlite3
Mas qual o problema?
Mas qual o problema?

●   Ter que resolver tudo na mão:
    ●   Se tiver autenticação?
    ●   Lidar com sessão, cookie...
    ●   HTML mal formatado
    ●   Crawlear outros recursos
    ●   Aumento de pontos de falha
    ●   Complexidade de testes
    ●   Encoding
    ●   Mais alguns outros
Ok... Então, #comofaz?
Quadrado mágico do Scrapy
Item
Item

●   Objeto Python que herda da classe
    scrapy.item.Item que é dict-like
Item

●   Objeto Python que herda da classe
    scrapy.item.Item que é dict-like
●   ORM-like
    ●   Atributos são instâncias da classe
        scrapy.item.Field
Item

●   Objeto Python que herda da classe
    scrapy.item.Item que é dict-like
●   ORM-like
    ●   Atributos são instâncias da classe
        scrapy.item.Field
●   Consegue separar a “modelagem” e
    tratamento dos dados do processamento do
    crawler:
    ●   Field(serializer=str)
scrapy.http.Request
scrapy.http.Request

●   Classe que abstrai a requisição:
scrapy.http.Request

●   Classe que abstrai a requisição:
●   Request(url, callback=func)
scrapy.http.Request

●   Classe que abstrai a requisição:
●   Request(url, callback=func)
●   Outros argumentos:
    ●   method
    ●   body
    ●   headers
    ●   ...
Spider
Spider
●   Classe executora do crawler que herda de
    scrapy.spider.BaseSpider
Spider
●   Classe executora do crawler que herda de
    scrapy.spider.BaseSpider
●   Atributos chaves:
    ●   name
    ●   allowed_domains
    ●   start_urls
Spider
●   Classe executora do crawler que herda de
    scrapy.spider.BaseSpider
●   Atributos chaves:
    ●   name
    ●   allowed_domains
    ●   start_urls
●   Métodos chaves:
    ●   start_requests(self)
    ●   parse(self, response)
scrapy.select.HtmlXPathSelector
scrapy.select.HtmlXPathSelector

●   BeautifulSoup: objeto Python baseado na
    estrutura do documento
scrapy.select.HtmlXPathSelector

●   BeautifulSoup: objeto Python baseado na
    estrutura do documento
●   Lxml: API baseada no ElementTree
scrapy.select.HtmlXPathSelector

●   BeautifulSoup: objeto Python baseado na
    estrutura do documento
●   Lxml: API baseada no ElementTree
●   HtmlXPathSelector: Xpath!
scrapy.select.HtmlXPathSelector

●   BeautifulSoup: objeto Python baseado na
    estrutura do documento
●   Lxml: API baseada no ElementTree
●   HtmlXPathSelector: Xpath!
●   Métodos:
    ●   select(self, xpath)
    ●   extract(self)
    ●   re(self, regex)
$ scrapy startproject pybr8talks
github.com/berinhard/scrapy-pybr8
Item Pipeline
Scrapy Shell
Feed Exports
Logging
DjangoItem
Scrapyd
Perguntas?
Obrigado!

Bernardo Fontes
falecomigo@bernardofontes.net

http://bernardofontes.net
http://twitter.com/bbfontes
http://github.com/berinhard

More Related Content

What's hot

Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDBLuiz Duarte
 
Mecanismo de Busca com Node.js + MongoDB
Mecanismo de Busca com Node.js + MongoDBMecanismo de Busca com Node.js + MongoDB
Mecanismo de Busca com Node.js + MongoDBLuiz Duarte
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBAri Stopassola Junior
 
Ruby on Rails + MongoDB - GURU Sorocaba
Ruby on Rails + MongoDB - GURU SorocabaRuby on Rails + MongoDB - GURU Sorocaba
Ruby on Rails + MongoDB - GURU SorocabaLucas Renan
 
Mecanismo de busca PHP + MongoDB
Mecanismo de busca PHP + MongoDBMecanismo de busca PHP + MongoDB
Mecanismo de busca PHP + MongoDBLuiz Duarte
 
Como o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasComo o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasWaldemar Neto
 
Curso mongo db com php
Curso mongo db com phpCurso mongo db com php
Curso mongo db com phpSuissa
 
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...Miguel Gallardo
 
Secot banco de dados no sql de código aberto
Secot   banco de dados no sql de código abertoSecot   banco de dados no sql de código aberto
Secot banco de dados no sql de código abertoSuissa
 
Novidades do elasticsearch 2.0 e como usá-lo com PHP
Novidades do elasticsearch 2.0 e como usá-lo com PHPNovidades do elasticsearch 2.0 e como usá-lo com PHP
Novidades do elasticsearch 2.0 e como usá-lo com PHPLuiz Henrique Zambom Santana
 
BigData - ElasticSearch + PHP
BigData - ElasticSearch + PHPBigData - ElasticSearch + PHP
BigData - ElasticSearch + PHPFelipe Weckx
 
Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos
Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafosPh pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos
Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafosSuissa
 
Iniciando com javaScript 2017
Iniciando com javaScript 2017Iniciando com javaScript 2017
Iniciando com javaScript 2017Romualdo Andre
 
Elasticsearch como gerenciar seus logs com logstash e kibana
Elasticsearch   como gerenciar seus logs com logstash e kibanaElasticsearch   como gerenciar seus logs com logstash e kibana
Elasticsearch como gerenciar seus logs com logstash e kibanaLuiz Henrique Zambom Santana
 

What's hot (20)

Mashups: Criando Valor na Web 2.0 (BandTec)
Mashups: Criando Valor na Web 2.0 (BandTec)Mashups: Criando Valor na Web 2.0 (BandTec)
Mashups: Criando Valor na Web 2.0 (BandTec)
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDB
 
Mecanismo de Busca com Node.js + MongoDB
Mecanismo de Busca com Node.js + MongoDBMecanismo de Busca com Node.js + MongoDB
Mecanismo de Busca com Node.js + MongoDB
 
MongoDB
MongoDBMongoDB
MongoDB
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDB
 
Web Crawlers
Web CrawlersWeb Crawlers
Web Crawlers
 
Ruby on Rails + MongoDB - GURU Sorocaba
Ruby on Rails + MongoDB - GURU SorocabaRuby on Rails + MongoDB - GURU Sorocaba
Ruby on Rails + MongoDB - GURU Sorocaba
 
Mecanismo de busca PHP + MongoDB
Mecanismo de busca PHP + MongoDBMecanismo de busca PHP + MongoDB
Mecanismo de busca PHP + MongoDB
 
Como o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasComo o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscas
 
Curso mongo db com php
Curso mongo db com phpCurso mongo db com php
Curso mongo db com php
 
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
 
Secot banco de dados no sql de código aberto
Secot   banco de dados no sql de código abertoSecot   banco de dados no sql de código aberto
Secot banco de dados no sql de código aberto
 
Novidades do elasticsearch 2.0 e como usá-lo com PHP
Novidades do elasticsearch 2.0 e como usá-lo com PHPNovidades do elasticsearch 2.0 e como usá-lo com PHP
Novidades do elasticsearch 2.0 e como usá-lo com PHP
 
Treinamento Elasticsearch - Parte 2
Treinamento Elasticsearch - Parte 2Treinamento Elasticsearch - Parte 2
Treinamento Elasticsearch - Parte 2
 
BigData - ElasticSearch + PHP
BigData - ElasticSearch + PHPBigData - ElasticSearch + PHP
BigData - ElasticSearch + PHP
 
Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos
Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafosPh pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos
Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos
 
Iniciando com javaScript 2017
Iniciando com javaScript 2017Iniciando com javaScript 2017
Iniciando com javaScript 2017
 
Palestra MongoDB
Palestra MongoDBPalestra MongoDB
Palestra MongoDB
 
Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1
 
Elasticsearch como gerenciar seus logs com logstash e kibana
Elasticsearch   como gerenciar seus logs com logstash e kibanaElasticsearch   como gerenciar seus logs com logstash e kibana
Elasticsearch como gerenciar seus logs com logstash e kibana
 

Viewers also liked

Extraindo dados públicos na marra com Python
Extraindo dados públicos na marra com PythonExtraindo dados públicos na marra com Python
Extraindo dados públicos na marra com PythonPedro Valente
 
Estudo preliminar de zoneamento climático para cultura da oliveira no estado ...
Estudo preliminar de zoneamento climático para cultura da oliveira no estado ...Estudo preliminar de zoneamento climático para cultura da oliveira no estado ...
Estudo preliminar de zoneamento climático para cultura da oliveira no estado ...Agricultura Sao Paulo
 
Raspador: Biblioteca em Python para extração de dados em texto semi-estruturado
Raspador: Biblioteca em Python para extração de dados em texto semi-estruturadoRaspador: Biblioteca em Python para extração de dados em texto semi-estruturado
Raspador: Biblioteca em Python para extração de dados em texto semi-estruturadoFernando Macedo
 
XPath for web scraping
XPath for web scrapingXPath for web scraping
XPath for web scrapingScrapinghub
 
Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Marcel Caraciolo
 
Jsoup Tutorial for Beginners - Javatpoint
Jsoup Tutorial for Beginners - JavatpointJsoup Tutorial for Beginners - Javatpoint
Jsoup Tutorial for Beginners - JavatpointJavaTpoint.Com
 
Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Luiz Aldabalde
 
Estudo de caso do "O Curioso" (Rio on Rails)
Estudo de caso do "O Curioso" (Rio on Rails)Estudo de caso do "O Curioso" (Rio on Rails)
Estudo de caso do "O Curioso" (Rio on Rails)guestf4f70f
 
Shut up and give me the data
Shut up and give me the dataShut up and give me the data
Shut up and give me the dataAna Paula Gomes
 
Introdução a Python - Python Poli
Introdução a Python  - Python PoliIntrodução a Python  - Python Poli
Introdução a Python - Python PoliRodrigo Lira
 

Viewers also liked (20)

Extraindo dados públicos na marra com Python
Extraindo dados públicos na marra com PythonExtraindo dados públicos na marra com Python
Extraindo dados públicos na marra com Python
 
Hackeando Dados públicos com python
Hackeando Dados públicos com pythonHackeando Dados públicos com python
Hackeando Dados públicos com python
 
Hackeando o Facebook com Python
Hackeando o Facebook com PythonHackeando o Facebook com Python
Hackeando o Facebook com Python
 
Hackeando o Facebook com Python
Hackeando o Facebook com PythonHackeando o Facebook com Python
Hackeando o Facebook com Python
 
Web crawler
Web crawlerWeb crawler
Web crawler
 
Estudo preliminar de zoneamento climático para cultura da oliveira no estado ...
Estudo preliminar de zoneamento climático para cultura da oliveira no estado ...Estudo preliminar de zoneamento climático para cultura da oliveira no estado ...
Estudo preliminar de zoneamento climático para cultura da oliveira no estado ...
 
Scraping
ScrapingScraping
Scraping
 
Raspador: Biblioteca em Python para extração de dados em texto semi-estruturado
Raspador: Biblioteca em Python para extração de dados em texto semi-estruturadoRaspador: Biblioteca em Python para extração de dados em texto semi-estruturado
Raspador: Biblioteca em Python para extração de dados em texto semi-estruturado
 
XPath for web scraping
XPath for web scrapingXPath for web scraping
XPath for web scraping
 
Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3
 
Jsoup tutorial
Jsoup tutorialJsoup tutorial
Jsoup tutorial
 
Jsoup Tutorial for Beginners - Javatpoint
Jsoup Tutorial for Beginners - JavatpointJsoup Tutorial for Beginners - Javatpoint
Jsoup Tutorial for Beginners - Javatpoint
 
Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011
 
Web Crawling
Web CrawlingWeb Crawling
Web Crawling
 
Estudo de caso do "O Curioso" (Rio on Rails)
Estudo de caso do "O Curioso" (Rio on Rails)Estudo de caso do "O Curioso" (Rio on Rails)
Estudo de caso do "O Curioso" (Rio on Rails)
 
Shut up and give me the data
Shut up and give me the dataShut up and give me the data
Shut up and give me the data
 
LOCKSS Como funciona 2007
LOCKSS Como funciona 2007LOCKSS Como funciona 2007
LOCKSS Como funciona 2007
 
Parsing XML Data
Parsing XML DataParsing XML Data
Parsing XML Data
 
Introdução a Python - Python Poli
Introdução a Python  - Python PoliIntrodução a Python  - Python Poli
Introdução a Python - Python Poli
 
Web - Crawlers
Web - CrawlersWeb - Crawlers
Web - Crawlers
 

Similar to Crawleando a web feito gente grande com o scrapy

Raspagem de Dados com Python
Raspagem de Dados com PythonRaspagem de Dados com Python
Raspagem de Dados com PythonThiago Curvelo
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nívelIgor Sobreira
 
“Web Spiders” – Automação para Web Hacking
“Web Spiders” – Automação para Web Hacking“Web Spiders” – Automação para Web Hacking
“Web Spiders” – Automação para Web HackingConviso Application Security
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAThiago Cifani
 
Sistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computingSistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computingPriscila Mayumi
 
Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)Daniel Lopes
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetMarcos Petry
 
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web  - Marcos Daniel PetryPython mudando o modo de desenvolver para a web  - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web - Marcos Daniel PetryTchelinux
 
Troubleshooting docker
Troubleshooting dockerTroubleshooting docker
Troubleshooting dockerRafael Gomes
 
SEO Para Desenvolvedores
SEO Para Desenvolvedores SEO Para Desenvolvedores
SEO Para Desenvolvedores Umbler
 
Automatizando tarefas com Python
Automatizando tarefas com PythonAutomatizando tarefas com Python
Automatizando tarefas com Pythonpugpe
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonIgor Sobreira
 
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12Alexandre Gaigalas
 
Desmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkDesmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkBruno Oliveira
 
O que podemos fazer com Python?
O que podemos fazer com Python?O que podemos fazer com Python?
O que podemos fazer com Python?Izabela Guerreiro
 

Similar to Crawleando a web feito gente grande com o scrapy (20)

Raspagem de Dados com Python
Raspagem de Dados com PythonRaspagem de Dados com Python
Raspagem de Dados com Python
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nível
 
“Web Spiders” – Automação para Web Hacking
“Web Spiders” – Automação para Web Hacking“Web Spiders” – Automação para Web Hacking
“Web Spiders” – Automação para Web Hacking
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
Introdução a Framework Flask
Introdução a Framework FlaskIntrodução a Framework Flask
Introdução a Framework Flask
 
Sistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computingSistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computing
 
Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)
 
AJAX
AJAXAJAX
AJAX
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internet
 
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web  - Marcos Daniel PetryPython mudando o modo de desenvolver para a web  - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
 
Python
PythonPython
Python
 
Troubleshooting docker
Troubleshooting dockerTroubleshooting docker
Troubleshooting docker
 
SEO Para Desenvolvedores
SEO Para Desenvolvedores SEO Para Desenvolvedores
SEO Para Desenvolvedores
 
Automatizando tarefas com Python
Automatizando tarefas com PythonAutomatizando tarefas com Python
Automatizando tarefas com Python
 
Performance Web com ASP.NET MVC
Performance Web com ASP.NET MVCPerformance Web com ASP.NET MVC
Performance Web com ASP.NET MVC
 
Bsides4cooler
Bsides4coolerBsides4cooler
Bsides4cooler
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com Python
 
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
 
Desmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkDesmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest Framework
 
O que podemos fazer com Python?
O que podemos fazer com Python?O que podemos fazer com Python?
O que podemos fazer com Python?
 

More from Bernardo Fontes

Tdd Com Mock e Orientação a Objetos (PyNE 2015)
Tdd Com Mock e Orientação a Objetos (PyNE 2015)Tdd Com Mock e Orientação a Objetos (PyNE 2015)
Tdd Com Mock e Orientação a Objetos (PyNE 2015)Bernardo Fontes
 
Melhorando Testes No Django Com O Model Mommy
Melhorando Testes No Django Com O Model MommyMelhorando Testes No Django Com O Model Mommy
Melhorando Testes No Django Com O Model MommyBernardo Fontes
 
Aprenda a programar direito: pergunte-me como ii
Aprenda a programar direito:  pergunte-me como iiAprenda a programar direito:  pergunte-me como ii
Aprenda a programar direito: pergunte-me como iiBernardo Fontes
 
Django: um framework web para perfeccionistas com prazo
Django: um framework web para perfeccionistas com prazoDjango: um framework web para perfeccionistas com prazo
Django: um framework web para perfeccionistas com prazoBernardo Fontes
 
Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?Bernardo Fontes
 

More from Bernardo Fontes (6)

Tdd Com Mock e Orientação a Objetos (PyNE 2015)
Tdd Com Mock e Orientação a Objetos (PyNE 2015)Tdd Com Mock e Orientação a Objetos (PyNE 2015)
Tdd Com Mock e Orientação a Objetos (PyNE 2015)
 
Melhorando Testes No Django Com O Model Mommy
Melhorando Testes No Django Com O Model MommyMelhorando Testes No Django Com O Model Mommy
Melhorando Testes No Django Com O Model Mommy
 
Aprenda a programar direito: pergunte-me como ii
Aprenda a programar direito:  pergunte-me como iiAprenda a programar direito:  pergunte-me como ii
Aprenda a programar direito: pergunte-me como ii
 
Django: um framework web para perfeccionistas com prazo
Django: um framework web para perfeccionistas com prazoDjango: um framework web para perfeccionistas com prazo
Django: um framework web para perfeccionistas com prazo
 
Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?
 
ForkinRio
ForkinRioForkinRio
ForkinRio
 

Crawleando a web feito gente grande com o scrapy