Hackeando a Web com Python 3
Marcel Caraciolo @marcelcaraciolo Desenvolvedor, Cientista, Instrutor, co- fundador do PyCursos, contribui com projetos open-source na área de ML, trabalha com Python há 6 anos, interessado em mobile, educação, machine learning and dadoooossss! Recife, Brazil - http://aimotion.blogspot.com
http://bit.ly/IxkwD4
Quem é Marcel ?
Este sou eu!
Tutorial para iniciantes!
Material adaptado dos Slides do Professor Fernando Masanori!
!
!
!
www.slideshare.net/fmasanori/hackeando-o-facebook-e-o-twitter-com-python-3-
campus-party-2013
Agenda• Intro ao Python 3
Brincando com Facebook
Brincando com Reddit & MongoDB
Brincando com Open Data & Twitter
Material para Casa
Brincando com Foursquare
Conhecendo a audiência• Professores
Estudantes
Sabem programar
Profissionais de TI
Sabem programar em Python
Primeiro prêmio
We love Python!
• Permite focar no problema, sem perder tempo na sintaxe
• Interativa
• Alta produtividade
• Baterias inclusas
• Comunidade livre, forte, diversificada, alegre e acolhedora
• Orientada a objetos, funcional, estruturada
• Uso geral vs nichos
• Simples de iniciar, sem esgotar
We Love Python
http://www.python.org/psf/diversity/
We Love Python
Meta: 20 % de presença feminina em 2015
We Love Python
Meta: 25% não americanos em 2015
We Love Python
We Love Python Hello World
We Love Python Hello World
Origem do nome Python
1h video/s 4 billion views
Python: quem usa Quem usa ?
Quem usa ?Python: quem usa
Quem usa ?Python: quem usa
Quem usa ?Python: quem usa
Quem usa ?Python: quem usa
Quem usa ?Python: quem usa
Quem usa ?Python: quem usa
Quem usa ?Python: quem usa Python: quem usa
Quem usa ?Python: quem usa
Você sabia que o “Pi” do nome se origina de Python?
Quem usa ?Python: quem usa
PopularidadePopularidade Github e StackOverflow
PopularidadeJobTrends Indeed.com
PopularidadeLinguagem do ano TIOBE em 2007 e 2010
Linguagem Favorita do LinuxJournal: 2009 a 2012
PopularidadeLinguagem do ano TIOBE em
2007 e 2010
O que falam de Python ?
“Se o Voldemort quisesse ser realmente imortal, ele teria programado uma horcrux recursiva em Python.” Harry Potter.
O que falam de Python
O que falam de Python ?
“A vida é melhor sem chaves“. “A vida é curta! Você precisa de Python”.
“Python me ajuda a focar nos meus conceitos em vez de ficar brigando com a linguagem”.
“Eu não preciso digitar muito. Mas o que eu digito é certo”. Bruce Eckel, autor do best seller “Thinking in Java”.
O que falam de Python
O que falam de Python ?
“Python é uma das cinco mais importantes linguagens que todo programador deve conhecer” Bjarne Stroustrup, criador de C++
O que falam de Python
Simples de Aprender
Neil Ibata, 15 anos, foi aprender a programar em Python com o pai e virou capa da revista Nature.
Linguagem poderosa, mas simples de aprender
Simples de Aprender
Programa de uma menina de 12 anos do Projeto CEDET Decolar
Linguagem poderosa, mas simples de aprender
Tempo para ser produtivo
C 2 anos Java 6 meses Python 1 mes
Tempo Para Ser Produtivo
Poder de Expressividade Expressive Power
Language Statements Lines C 1 1 Java 2.5 1.5 Python 6 6.5
Segundo prêmio
• Conta no Facebook • Internet • Python 3 • IDLE ou semelhante • Vamos fazer um aquecimento • Tutorial completo da linguagem
em Python for Zombies (YouTube)
Check List
Aquecimento: Install Python 3
• Windows – download
– executar > next > next...
• Linux – sudo apt-get install idle-python3.3
• Mac OS X – sudo port install python32
Aquecimento: Using Python 3
• Windows
– Iniciar > Programas > Python3.3 >
IDLE (Python GUI)
• Linux (terminal)
– idle-python3.3 &
• Mac OS X (terminal)
– IDLE3.3 &
Aquecimento: hello world
No modo interativo você recebe a resposta para cada comando executado
Aquecimento: modo interativo
• 2**100000 • dir(“abacate”) • help(“abacate”.upper) • “abacate”.upper() • a = “abacate” • b = 42 • a, b = b, a • print (a, b)
Aquecimento: modo interativo
• import random • random.randint(1, 100) • random.randint(1, 100) • random.choice(42, 13, 24, 7, 3, 10) • print (chr(33000)) • import this • import antigravity
Aquecimento: errando
No Python os espaços iniciais são importantes
Aquecimento: errando
String diferente de inteiro
Aquecimento: edition mode
No modo edição você precisa “rodar” o programa (Run Module ou F5)
Aquecimento: edition mode
Aquecimento: edition mode
Sempre use a extensão “.py” para não perder as cores do seu programa
Aquecimento: jogo simples
https://gist.github.com/fmasanori/6029123 https://gist.github.com/marcelcaraciolo/7715647
https://gist.github.com/marcelcaraciolo/7715664
for == while enrustido
Códigos equivalentes: for durante o dia vira while à noite
for == while enrustido
Códigos equivalentes
for == while enrustido
Códigos equivalentes
Aquecimento: criptografia
Feito por outra menina de 12 anos
• O dicionário em si consiste em relacionar uma chave a um valor específico
• Diferentemente das listas, onde o índice é um número, dicionários utilizam suas chaves como índice
• Para adicionar novos elementos não preciso de append, basta fazer a atribuição – Se a chave já existe: o valor associado é alterado – Se a chave não existe: a nova chave é adicionada
Dictionaries
Dictionaries
Dictionaries
• Faça um programa que leia o arquivo alice.txt e conte o número de ocorrências de cada palavra no texto. Obs.: para saber os caracteres especiais use import string e utilize string.punctuation
• http://www.gutenberg.org/cache/epub/11/pg11.txt
Dictionaries
http://www.gutenberg.org/cache/epub/11/pg11.txt
Dictionaries
https://gist.github.com/4673017 https://gist.github.com/marcelcaraciolo/7715709
JSON killer module JSON Killer!
• http://json.org/ • Independente de linguagem • Pares nome/valor • Lista ordenada • Muito adotado atualmente • Alternativa para o XML
– XML mais verbosa – XML menor legibilidade
Java Script Object Notation JavaScript Object Notation
Chuck Norris Nerdy Jokes
https://gist.github.com/4745061
Chuck Norris Nerdy Jokes
https://gist.github.com/marcelcaraciolo/7715734
Facebook Hacking
Hackers não são “do mal”?
Facebook Hacking
“O Facebook é dirigido por hackers. A maioria das pessoas pensa de um hacker como alguém que invade um sistema de computador. Mas nós vemos isso como uma filosofia. Aqui, os hackers assumem que sempre há uma maneira melhor, mais eficiente de resolver problemas.” facebook.com/careers (2012)
Facebook Hacking
{'first_name': 'Marcel',! 'gender': 'male',! 'id': '100000202630360',! 'last_name': 'Caraciolo',! 'link': 'http://www.facebook.com/marcel.caraciolo',! 'locale': 'en_US',! 'name': 'Marcel Caraciolo',! 'username': 'marcel.caraciolo'}
https://gist.github.com/marcelcaraciolo/7715741
https://gist.github.com/marcelcaraciolo/7715760
• https://developers.facebook.com/docs/reference/api/examples/
• Objetos JSON • Links autenticados • Obs.: access_token expira
• Autenticar novamente neste caso
Graph API
Anote o formato!
https://developers.facebook.com/docs/reference/api/examples/
Copie o access token!
https://developers.facebook.com/tools/explorer
Copie o access token!
https://developers.facebook.com/tools/explorer
https://gist.github.com/4674792
Facebook Friends
https://gist.github.com/marcelcaraciolo/7715831
https://gist.github.com/4684752
Facebook Friends Photos
https://gist.github.com/marcelcaraciolo/7715862
Android Wallpaper
Android Wallpaper
https://gist.github.com/marcelcaraciolo/7715921
Maria Luiza: Como se o evento não já estivesse bom, o CITi ainda melhora !!!!!#talkabit #Euvou!!Victor Maristane: Garoto Propaganda do Talk a Bit no NE10, hehehe!!(A propósito, não deixem de se inscrever no Talk a Bit++: http://citi.org.br/talkabit :), essa edição vai conseguir ser absurdamente melhor :DD)!!Jader Anderson: Boa filosofia para um encontro: Lean, Code e Play.!!http://citi.org.br/talkabit/!!Maria Luiza: Eu não sei se te contei MAS, o Talk a Bit custa apenas R$ 16,00 e já é dia 30/11. Vai ficar de fora é ??!Se inscreve logo:!http://citi.org.br/talkabit/
Idéias para o futuro ?! Análise de Sentimentos!
(tribute to Aaron Swartz, cofounder of Reddit, nov-1986, jan-2013)
Reddit MongoDB Client
https://gist.github.com/4691077
(by 10gen)
Reddit Client
https://gist.github.com/marcelcaraciolo/7716004
Question: cx_freeze “zlib not avaiable” error when using multiple threads #comments: 3 http://www.reddit.com/r/Python/comments/1ro891/question_cx_freeze_zlib_not_avaiable_error_when/ !Python Selenium - Open new tab / focus tab / close tab #comments: 9 http://www.reddit.com/r/Python/comments/1rmg4n/python_selenium_open_new_tab_focus_tab_close_tab/ !Python 3 gets some credit for how it chose to handle Unicode compared to other languages #comments: 24 http://mortoray.com/2013/11/27/the-string-type-is-broken/ !I am having too much trouble installing pygame. #comments: 1 http://www.reddit.com/r/Python/comments/1rnxnq/i_am_having_too_much_trouble_installing_pygame/ !Not exclusively Python, but a nice tool to generate regex code in multiple languages. #comments: 13 http://txt2re.com/ !Setting up a (web) development environment #comments: 11 http://www.reddit.com/r/Python/comments/1rnfle/setting_up_a_web_development_environment/ !Building a Flask Blog: Part2 #comments: 2 http://pypix.com/python/building-flask-blog-part2/
Flexible Schema
MongoDB == JSON MongoDB == BSON
Banco RelacionalRelational DB
Reddit MongoDB Client
https://gist.github.com/marcelcaraciolo/7716030
Reddit MongoDB Client
Foursquare & TagCloud
Foursquare & TagCloud's
Checklist
1. Instalar pygame
2. Instalar simplejson
3. Instalar pytagcloud
https://developer.foursquare.com/docs/
https://developer.foursquare.com/docs/venues/search
https://developer.foursquare.com/docs/venues/tips
https://gist.github.com/marcelcaraciolo/7717945
Delta Expresso
Twitter & OpenData
Twitter & OpenData
Checklist
1. tweepy
Acesso Twitter Autenticado
• Até junho de 2013 era possível acessar várias informações do Twitter sem necessidade de autenticação
• O Twitter resolveu melhorar a segurança e utilizar OAuth (Open Authentication) até o acesso básico (search)
• Neste protocolo, recebemos uma chave e senha que permite o acesso a um recurso específico durante algum tempo
Acesso Twitter Autenticado
Acesso Twitter Autenticado
• O usuário do Twitter precisa autorizar um programa externo, que recebe um consumer_key e um consumer_secret
• Na posse dessa chave e senha podemos pegar uma chave e senha de acesso temporária
• Não se preocupe se você não entender o Tweepy. Ano passado era mais simples e só recentemente ficou mais complicado acessar o Twitter
Acesso Twitter Autenticado
Acesso Twitter AutenticadoObtendo Chave e Senha de Acesso
https://dev.twitter.com/
Acesso Twitter AutenticadoObtendo Chave e Senha de Acesso
Acesso Twitter Autenticado
Acesso Twitter AutenticadoEnviando mensagens
Enviando mensagens!
Lendo API do Transito Recife
Lendo API do Transito Recife
http://www.recife.pe.gov.br/transito/recuperarPontos.aspx
https://gist.github.com/marcelcaraciolo/7717717
Lendo API do Transito Recife
Material para Casa
Twitter Dev API
Facebook Dev API
Foursquare API
Portal Transparencia
Material para CasaMaterial para aprofundamento
http://www.novatec.com.br/livros/python-cookbook/
Material para CasaMaterial para aprofundamento
Obs.: o autor já anunciou a segunda edição, aguardem...
Material para CasaMaterial para aprofundamento
Obs.: o autor já anunciou a segunda edição, aguardem...
Material para CasaMaterial para aprofundamento
Material para CasaMaterial para aprofundamento
Material para CasaMaterial para aprofundamento
Material para CasaMaterial para aprofundamento
Web Scraping
http://pyvideo.org/video/609/web-scraping-reliably-and-efficiently-pull-data
Material para Casa
http://beta.pycursos.com/python-para-zumbis/
Python para Zumbis (gratuito) http://pycursos.com/python-para-zumbis
Hackeando a Web com Python 3
Marcel Caraciolo @marcelcaraciolo Desenvolvedor, Cientista, Instrutor, co- fundador do PyCursos, contribui com projetos open-source na área de ML, trabalha com Python há 6 anos, interessado em mobile, educação, machine learning and dadoooossss! Recife, Brazil - http://aimotion.blogspot.com
Recommended