SlideShare ist ein Scribd-Unternehmen logo
1 von 46
Downloaden Sie, um offline zu lesen
Raspagem de Dados
para Mulheres
Um resumo sobre o workshop oferecido pelas
por Paty Morimoto
Quem sou eu?
EMBARCADOS C JAVA FULL STACK
SOLUÇÕES DE
PAGAMENTO
TELECOM BILLING
ANALISTA DE
SISTEMASSUPORTE TÉCNICO
FUGITIVA DE ENGENHARIA
DA COMPUTAÇÃO
PYTHON
E quem são as PyLadies?
Surgiram em abril de 2011, em Los Angeles
Hoje: + de 40 grupos locais pelo mundo!
PyLadies por PyLadies
“Somos um grupo internacional de mentoria com foco em ajudar
mais mulheres a tornarem-se participantes ativas e líderes na
comunidade open-source Python.”
“PyLadies também tem o intuito de proporcionar uma rede de
suporte amigável para mulheres e uma ponte para o universo
Python. Qualquer pessoa interessada em Python é encorajada a
participar”
Fonte: http://www.pyladies.com/
No Brasil: PyLadies Natal - RN (2013)
20 cidades pelo país
PyLadies São Paulo (2015)
Sobre o workshop das PyLadies
Sobre o workshop das PyLadies
Roberta Takenaka
Sobre o workshop das PyLadies
Web Scraping
Técnicas utilizadas para coleta de dados
Quais aplicações para dados coletados
Mão na massa
Raspagem de Dados
Raspagem de Dados...
“... (do inglês, Data scraping) é uma técnica computacional na qual um programa extrai
dados de saída legível somente para humanos, proveniente de um serviço ou aplicativo.”
Fonte: https://pt.wikipedia.org/wiki/Screen_scraping
“Screen scraping usually refers to a legitimate technique used to translate screen data
from one application to another. It is sometimes confused with content scraping, which is
the use of manual or automatic means to harvest content from a website without the
approval of the website owner.”
Fonte: https://www.techopedia.com/definition/16597/screen-scraping
Web Scraping...
“... (web harvesting or web data extraction) is data scraping used for extracting data
from websites. Web scraping software may access the World Wide Web directly using the
Hypertext Transfer Protocol, or through a web browser. While web scraping can be done
manually by a software user, the term typically refers to automated processes
implemented using a bot or web crawler. It is a form of copying, in which specific data is
gathered and copied from the web, typically into a central local database or spreadsheet,
for later retrieval or analysis.”
Fonte: https://en.wikipedia.org/wiki/Web_scraping
Técnicas para coleta de dados
Técnicas para coleta de dados não estruturados
Dados não estruturados:
misturados com a
apresentação. Ex.: HTML
Técnicas para coleta de dados não estruturados
'''
Web Scrapping: arquivo básico para leitura de uma página do endereço definido
na URL definida
'''
from urllib.request import urlopen
response = urlopen('http://www.bbc.com/mundo')
resultado = response.read().decode('utf-8')
# gravar o resultado em um arquivo
open('resultado_html.html', 'w', encoding='utf-8').write(resultado)
Técnicas para coleta de dados não estruturados
Técnicas para coleta de dados não estruturados
Técnicas para coleta de dados não estruturados
Beautiful Soup
Libs para extrair
dados do HTML!
Beautiful Soup
from urllib.request import urlopen
from bs4 import BeautifulSoup
response = urlopen('http://www.python.org/')
bsObj =
BeautifulSoup(html.read(), 'html.parser')
print(bsObj.h1)
$ python ws_bs4.py
<h1 class="site-headline">
<a href="/"><img alt="python™" class="python-logo"
src="/static/img/python-logo.png"/></a>
</h1>
Técnicas para coleta de dados não estruturados
Técnicas para coleta de dados não estruturados
import scrapy
class SpiderSimples(scrapy.Spider):
name = 'meuspider'
start_urls = ['http://example.com']
def parse(self, response):
self.log('Visitei o site: %s' % response.url)
yield { 'url': response.url, 'tamanho': len(response.body) }
proxima_url = 'http://www.google.com.br'
self.log('Agora vou para: %s' % proxima_url)
yield scrapy.Request(proxima_url, self.handle_google)
def handle_google(self, response):
self.log('Visitei o google via URL: %s' % response.url)
Técnicas para coleta de dados não estruturados
def handle_google(self, response):
self.log('Visitei o google via URL: %s' % response.url)
Técnicas para coleta de dados estruturados
Dados estruturados:
formatados como XML e
JSON
APIs - provedores dos dados
e
Libs - manipular XML/JSON
Técnicas para coleta de dados estruturados
Educação Dados Abertos BR
Educação Dados Abertos BR
Educação Dados Abertos BR
from urllib.request import urlopen
import csv
import json
url =
'http://educacao.dadosabertosbr.com/api/escolas/buscaavancada?situacaoFuncionamento=1
'
response = urlopen(url)
dados = response.read().decode('utf-8')
dados_escolas = json.loads(dados)
quantidade = dados_escolas[0]
escolas = dados_escolas[1]
Educação Dados Abertos BR
with open('escolas.csv', 'w', newline='') as csvfile:
fieldnames = ['anoCenso','cod','nome','codCidade','cidade','estado','regiao',
'situacaoFuncionamento','situacaoFuncionamentoTxt',
'dependenciaAdministrativa','dependenciaAdministrativaTxt','idebAF',
'idebAI','enemMediaGeral']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for escola in escolas:
writer.writerow(escola)
Facebook API
Facebook API - Criar App
Facebook API - Criar App
Facebook API - Criar App
Facebook API - Criar App
Facebook API - Docs e Ferramentas
https://developers.facebook.com/docs/graph-api
https://developers.facebook.com/tools/explorer
Facebook API - Código
# configurado no facebook
app_id = '1234567890123456'
app_secret = 'app_secret'
url_para_obter_access_token =
'https://graph.facebook.com/oauth/access_token?client_id={app_id}&client_secret={app_
secret}&grant_type=client_credentials'
.format(app_id=app_id,
app_secret=app_secret)
url = urlopen(url_para_obter_access_token)
# Obtenção do access token
access_token = url.read().decode('utf-8')
Facebook API - Código
# URL para obter dados
api_url = 'https://graph.facebook.com/'
page_id = 'PyLadiesSP'
# Obtenção de posts
url_para_obter_posts = api_url + page_id + '?fields=posts&' + access_token
# Obtenção de likes de um post
url_para_obter_posts = api_url + post_id + '?fields=likes&' + access_token
Facebook API - JSON
Facebook API - JSON
# Obtenção dos posts
url = urlopen(url_para_obter_posts)
json_posts = url.read().decode('utf-8')
# Converte JSON para Dict
dict_posts = json.loads(json_posts)
Twitter APP
Twitter APP
Consumer Key
Consumer Secret
Access Token
Access Token Secret
Twitter Rest API
$ pip install TwitterAPI
from TwitterAPI import TwitterAPI, TwitterRestPager
search_term = 'pizza'
consumer_key = # sua consumer key
consumer_secret = # sua consumer secret
access_token = # sua access token
access_token_secret = # sua access token secret
api = TwitterAPI(consumer_key,consumer_secret, access_token, access_token_secret)
resultado = TwitterRestPager(api, 'search/tweets', {'q': search_term})
for item in resultado.get_iterator():
r = item['text'] if 'text' in item else item
print(item['created_at'])
print(r.encode(encoding=sys.getdefautencoding()))
Twitter Rest API
Twitter API - Docs e Ferramentas
https://apps.twitter.com/
https://dev.twitter.com/rest/public
Links
● PyLadies Website (http://www.pyladies.com/)
● PyLadies São Paulo
○ Facebook: https://www.facebook.com/PyLadiesSP
○ Twitter: https://twitter.com/PyLadiesSP
○ Meetup: https://www.meetup.com/pyladiessp/
○ GitHub: https://github.com/PyLadiesSP
Contato
● email: excermori@gmail.com
● telegram: @Patymori
● fb: https://www.facebook.com/patricia.morimoto

Weitere ähnliche Inhalte

Andere mochten auch

Lançamento do Projecto Empoderamento da Mulher 10/09/2014
Lançamento do Projecto Empoderamento da Mulher 10/09/2014Lançamento do Projecto Empoderamento da Mulher 10/09/2014
Lançamento do Projecto Empoderamento da Mulher 10/09/2014
Development Workshop Angola
 
Nr 36 apresentação - padrão - workshop (1)
Nr 36 apresentação - padrão - workshop (1)Nr 36 apresentação - padrão - workshop (1)
Nr 36 apresentação - padrão - workshop (1)
Jupira Silva
 
Apostila de programaçao neurolinguistica lair ribeiro - pnl(2)
Apostila de programaçao neurolinguistica   lair ribeiro - pnl(2)Apostila de programaçao neurolinguistica   lair ribeiro - pnl(2)
Apostila de programaçao neurolinguistica lair ribeiro - pnl(2)
vanessa_campinas
 
Palestras motivacionais para mulheres
Palestras motivacionais para mulheresPalestras motivacionais para mulheres
Palestras motivacionais para mulheres
Solange Wittmann
 

Andere mochten auch (7)

Oficina Feminina de Empreendedorismo - Negócio de Mulher
Oficina Feminina de Empreendedorismo - Negócio de MulherOficina Feminina de Empreendedorismo - Negócio de Mulher
Oficina Feminina de Empreendedorismo - Negócio de Mulher
 
O empoderamento feminino na publicidade digital
O empoderamento feminino na publicidade digitalO empoderamento feminino na publicidade digital
O empoderamento feminino na publicidade digital
 
Lançamento do Projecto Empoderamento da Mulher 10/09/2014
Lançamento do Projecto Empoderamento da Mulher 10/09/2014Lançamento do Projecto Empoderamento da Mulher 10/09/2014
Lançamento do Projecto Empoderamento da Mulher 10/09/2014
 
Nr 36 apresentação - padrão - workshop (1)
Nr 36 apresentação - padrão - workshop (1)Nr 36 apresentação - padrão - workshop (1)
Nr 36 apresentação - padrão - workshop (1)
 
Apostila de programaçao neurolinguistica lair ribeiro - pnl(2)
Apostila de programaçao neurolinguistica   lair ribeiro - pnl(2)Apostila de programaçao neurolinguistica   lair ribeiro - pnl(2)
Apostila de programaçao neurolinguistica lair ribeiro - pnl(2)
 
A PNL e a Dinâmica em Espiral
A PNL e a Dinâmica em EspiralA PNL e a Dinâmica em Espiral
A PNL e a Dinâmica em Espiral
 
Palestras motivacionais para mulheres
Palestras motivacionais para mulheresPalestras motivacionais para mulheres
Palestras motivacionais para mulheres
 

Ähnlich wie Sobre o workshop "Raspagem de dados para mulheres"

Desenvolvimento web com CodeIgniter
Desenvolvimento web com CodeIgniterDesenvolvimento web com CodeIgniter
Desenvolvimento web com CodeIgniter
Pedro Junior
 

Ähnlich wie Sobre o workshop "Raspagem de dados para mulheres" (20)

Visão Geral De Desenvolvimento Web Sre 2012
Visão Geral De Desenvolvimento Web   Sre 2012Visão Geral De Desenvolvimento Web   Sre 2012
Visão Geral De Desenvolvimento Web Sre 2012
 
Web Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciênciaWeb Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciência
 
i-Educar - 1º Seminário PHP no Serpro
i-Educar - 1º Seminário PHP no Serproi-Educar - 1º Seminário PHP no Serpro
i-Educar - 1º Seminário PHP no Serpro
 
Desenvolvimento web com CodeIgniter
Desenvolvimento web com CodeIgniterDesenvolvimento web com CodeIgniter
Desenvolvimento web com CodeIgniter
 
Análise de Redes Sociais com Python
Análise de Redes Sociais com PythonAnálise de Redes Sociais com Python
Análise de Redes Sociais com Python
 
O que podemos fazer com Python?
O que podemos fazer com Python?O que podemos fazer com Python?
O que podemos fazer com Python?
 
Palestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopPalestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl Workshop
 
Funcionalidades de Acesso a Dados no 'Mango'
Funcionalidades de Acesso a Dados no 'Mango'Funcionalidades de Acesso a Dados no 'Mango'
Funcionalidades de Acesso a Dados no 'Mango'
 
HTTP, JSON, REST e AJAX com AngularJS
HTTP, JSON, REST e AJAX com AngularJSHTTP, JSON, REST e AJAX com AngularJS
HTTP, JSON, REST e AJAX com AngularJS
 
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
 
Machine learning java ce conference 2012 - fortaleza ce
Machine learning java ce conference 2012 - fortaleza ceMachine learning java ce conference 2012 - fortaleza ce
Machine learning java ce conference 2012 - fortaleza ce
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?
 
Apostila ajax
Apostila ajaxApostila ajax
Apostila ajax
 
PHP Aula07 - conexão Com Banco de Dados
PHP Aula07 - conexão Com Banco de DadosPHP Aula07 - conexão Com Banco de Dados
PHP Aula07 - conexão Com Banco de Dados
 
Aula2
Aula2Aula2
Aula2
 
Construindo um sistema distribuido usando rest
Construindo um sistema distribuido usando restConstruindo um sistema distribuido usando rest
Construindo um sistema distribuido usando rest
 
Workshop Django Framework - 30/10/2018
Workshop Django Framework - 30/10/2018Workshop Django Framework - 30/10/2018
Workshop Django Framework - 30/10/2018
 
Web Data Mining com R
Web Data Mining com RWeb Data Mining com R
Web Data Mining com R
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
 

Sobre o workshop "Raspagem de dados para mulheres"

  • 1. Raspagem de Dados para Mulheres Um resumo sobre o workshop oferecido pelas por Paty Morimoto
  • 3. EMBARCADOS C JAVA FULL STACK SOLUÇÕES DE PAGAMENTO TELECOM BILLING ANALISTA DE SISTEMASSUPORTE TÉCNICO FUGITIVA DE ENGENHARIA DA COMPUTAÇÃO PYTHON
  • 4. E quem são as PyLadies?
  • 5. Surgiram em abril de 2011, em Los Angeles
  • 6. Hoje: + de 40 grupos locais pelo mundo!
  • 7. PyLadies por PyLadies “Somos um grupo internacional de mentoria com foco em ajudar mais mulheres a tornarem-se participantes ativas e líderes na comunidade open-source Python.” “PyLadies também tem o intuito de proporcionar uma rede de suporte amigável para mulheres e uma ponte para o universo Python. Qualquer pessoa interessada em Python é encorajada a participar” Fonte: http://www.pyladies.com/
  • 8. No Brasil: PyLadies Natal - RN (2013) 20 cidades pelo país
  • 10. Sobre o workshop das PyLadies
  • 11. Sobre o workshop das PyLadies Roberta Takenaka
  • 12. Sobre o workshop das PyLadies Web Scraping Técnicas utilizadas para coleta de dados Quais aplicações para dados coletados Mão na massa
  • 14. Raspagem de Dados... “... (do inglês, Data scraping) é uma técnica computacional na qual um programa extrai dados de saída legível somente para humanos, proveniente de um serviço ou aplicativo.” Fonte: https://pt.wikipedia.org/wiki/Screen_scraping “Screen scraping usually refers to a legitimate technique used to translate screen data from one application to another. It is sometimes confused with content scraping, which is the use of manual or automatic means to harvest content from a website without the approval of the website owner.” Fonte: https://www.techopedia.com/definition/16597/screen-scraping
  • 15. Web Scraping... “... (web harvesting or web data extraction) is data scraping used for extracting data from websites. Web scraping software may access the World Wide Web directly using the Hypertext Transfer Protocol, or through a web browser. While web scraping can be done manually by a software user, the term typically refers to automated processes implemented using a bot or web crawler. It is a form of copying, in which specific data is gathered and copied from the web, typically into a central local database or spreadsheet, for later retrieval or analysis.” Fonte: https://en.wikipedia.org/wiki/Web_scraping
  • 17. Técnicas para coleta de dados não estruturados Dados não estruturados: misturados com a apresentação. Ex.: HTML
  • 18. Técnicas para coleta de dados não estruturados ''' Web Scrapping: arquivo básico para leitura de uma página do endereço definido na URL definida ''' from urllib.request import urlopen response = urlopen('http://www.bbc.com/mundo') resultado = response.read().decode('utf-8') # gravar o resultado em um arquivo open('resultado_html.html', 'w', encoding='utf-8').write(resultado)
  • 19. Técnicas para coleta de dados não estruturados
  • 20. Técnicas para coleta de dados não estruturados
  • 21. Técnicas para coleta de dados não estruturados Beautiful Soup Libs para extrair dados do HTML!
  • 22. Beautiful Soup from urllib.request import urlopen from bs4 import BeautifulSoup response = urlopen('http://www.python.org/') bsObj = BeautifulSoup(html.read(), 'html.parser') print(bsObj.h1) $ python ws_bs4.py <h1 class="site-headline"> <a href="/"><img alt="python™" class="python-logo" src="/static/img/python-logo.png"/></a> </h1> Técnicas para coleta de dados não estruturados
  • 23. Técnicas para coleta de dados não estruturados import scrapy class SpiderSimples(scrapy.Spider): name = 'meuspider' start_urls = ['http://example.com'] def parse(self, response): self.log('Visitei o site: %s' % response.url) yield { 'url': response.url, 'tamanho': len(response.body) } proxima_url = 'http://www.google.com.br' self.log('Agora vou para: %s' % proxima_url) yield scrapy.Request(proxima_url, self.handle_google) def handle_google(self, response): self.log('Visitei o google via URL: %s' % response.url)
  • 24. Técnicas para coleta de dados não estruturados def handle_google(self, response): self.log('Visitei o google via URL: %s' % response.url)
  • 25. Técnicas para coleta de dados estruturados Dados estruturados: formatados como XML e JSON
  • 26. APIs - provedores dos dados e Libs - manipular XML/JSON Técnicas para coleta de dados estruturados
  • 29. Educação Dados Abertos BR from urllib.request import urlopen import csv import json url = 'http://educacao.dadosabertosbr.com/api/escolas/buscaavancada?situacaoFuncionamento=1 ' response = urlopen(url) dados = response.read().decode('utf-8') dados_escolas = json.loads(dados) quantidade = dados_escolas[0] escolas = dados_escolas[1]
  • 30. Educação Dados Abertos BR with open('escolas.csv', 'w', newline='') as csvfile: fieldnames = ['anoCenso','cod','nome','codCidade','cidade','estado','regiao', 'situacaoFuncionamento','situacaoFuncionamentoTxt', 'dependenciaAdministrativa','dependenciaAdministrativaTxt','idebAF', 'idebAI','enemMediaGeral'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() for escola in escolas: writer.writerow(escola)
  • 32. Facebook API - Criar App
  • 33. Facebook API - Criar App
  • 34. Facebook API - Criar App
  • 35. Facebook API - Criar App
  • 36. Facebook API - Docs e Ferramentas https://developers.facebook.com/docs/graph-api https://developers.facebook.com/tools/explorer
  • 37. Facebook API - Código # configurado no facebook app_id = '1234567890123456' app_secret = 'app_secret' url_para_obter_access_token = 'https://graph.facebook.com/oauth/access_token?client_id={app_id}&client_secret={app_ secret}&grant_type=client_credentials' .format(app_id=app_id, app_secret=app_secret) url = urlopen(url_para_obter_access_token) # Obtenção do access token access_token = url.read().decode('utf-8')
  • 38. Facebook API - Código # URL para obter dados api_url = 'https://graph.facebook.com/' page_id = 'PyLadiesSP' # Obtenção de posts url_para_obter_posts = api_url + page_id + '?fields=posts&' + access_token # Obtenção de likes de um post url_para_obter_posts = api_url + post_id + '?fields=likes&' + access_token
  • 40. Facebook API - JSON # Obtenção dos posts url = urlopen(url_para_obter_posts) json_posts = url.read().decode('utf-8') # Converte JSON para Dict dict_posts = json.loads(json_posts)
  • 42. Twitter APP Consumer Key Consumer Secret Access Token Access Token Secret
  • 43. Twitter Rest API $ pip install TwitterAPI from TwitterAPI import TwitterAPI, TwitterRestPager search_term = 'pizza' consumer_key = # sua consumer key consumer_secret = # sua consumer secret access_token = # sua access token access_token_secret = # sua access token secret api = TwitterAPI(consumer_key,consumer_secret, access_token, access_token_secret) resultado = TwitterRestPager(api, 'search/tweets', {'q': search_term}) for item in resultado.get_iterator(): r = item['text'] if 'text' in item else item print(item['created_at']) print(r.encode(encoding=sys.getdefautencoding()))
  • 45. Twitter API - Docs e Ferramentas https://apps.twitter.com/ https://dev.twitter.com/rest/public
  • 46. Links ● PyLadies Website (http://www.pyladies.com/) ● PyLadies São Paulo ○ Facebook: https://www.facebook.com/PyLadiesSP ○ Twitter: https://twitter.com/PyLadiesSP ○ Meetup: https://www.meetup.com/pyladiessp/ ○ GitHub: https://github.com/PyLadiesSP Contato ● email: excermori@gmail.com ● telegram: @Patymori ● fb: https://www.facebook.com/patricia.morimoto