sobre o workshop "raspagem de dados para mulheres"

46
Raspagem de Dados para Mulheres Um resumo sobre o workshop oferecido pelas por Paty Morimoto

Upload: patricia-minamizawa

Post on 08-Feb-2017

57 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Sobre o workshop "Raspagem de dados para mulheres"

Raspagem de Dadospara Mulheres

Um resumo sobre o workshop oferecido pelas

por Paty Morimoto

Page 2: Sobre o workshop "Raspagem de dados para mulheres"

Quem sou eu?

Page 3: Sobre o workshop "Raspagem de dados para mulheres"

EMBARCADOS C JAVA FULL STACK

SOLUÇÕES DE PAGAMENTO

TELECOM BILLING

ANALISTA DE SISTEMASSUPORTE TÉCNICO

FUGITIVA DE ENGENHARIA DA COMPUTAÇÃO

PYTHON

Page 4: Sobre o workshop "Raspagem de dados para mulheres"

E quem são as PyLadies?

Page 5: Sobre o workshop "Raspagem de dados para mulheres"

Surgiram em abril de 2011, em Los Angeles

Page 6: Sobre o workshop "Raspagem de dados para mulheres"

Hoje: + de 40 grupos locais pelo mundo!

Page 7: Sobre o workshop "Raspagem de dados para mulheres"

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/

Page 8: Sobre o workshop "Raspagem de dados para mulheres"

No Brasil: PyLadies Natal - RN (2013)

20 cidades pelo país

Page 9: Sobre o workshop "Raspagem de dados para mulheres"

PyLadies São Paulo (2015)

Page 10: Sobre o workshop "Raspagem de dados para mulheres"

Sobre o workshop das PyLadies

Page 11: Sobre o workshop "Raspagem de dados para mulheres"

Sobre o workshop das PyLadies

Roberta Takenaka

Page 12: Sobre o workshop "Raspagem de dados para mulheres"

Sobre o workshop das PyLadies

Web Scraping

Técnicas utilizadas para coleta de dados

Quais aplicações para dados coletados

Mão na massa

Page 13: Sobre o workshop "Raspagem de dados para mulheres"

Raspagem de Dados

Page 14: Sobre o workshop "Raspagem de dados para mulheres"

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

Page 15: Sobre o workshop "Raspagem de dados para mulheres"

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

Page 16: Sobre o workshop "Raspagem de dados para mulheres"

Técnicas para coleta de dados

Page 17: Sobre o workshop "Raspagem de dados para mulheres"

Técnicas para coleta de dados não estruturados

Dados não estruturados: misturados com a

apresentação. Ex.: HTML

Page 18: Sobre o workshop "Raspagem de dados para mulheres"

Técnicas para coleta de dados não estruturados

'''Web Scrapping: arquivo básico para leitura de uma página do endereço definidona 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 arquivoopen('resultado_html.html', 'w', encoding='utf-8').write(resultado)

Page 19: Sobre o workshop "Raspagem de dados para mulheres"

Técnicas para coleta de dados não estruturados

Page 20: Sobre o workshop "Raspagem de dados para mulheres"

Técnicas para coleta de dados não estruturados

Page 21: Sobre o workshop "Raspagem de dados para mulheres"

Técnicas para coleta de dados não estruturados

Beautiful Soup

Libs para extrair dados do HTML!

Page 22: Sobre o workshop "Raspagem de dados para mulheres"

Beautiful Soup

from urllib.request import urlopenfrom 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

Page 23: Sobre o workshop "Raspagem de dados para mulheres"

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)

Page 24: Sobre o workshop "Raspagem de dados para mulheres"

Técnicas para coleta de dados não estruturados

def handle_google(self, response): self.log('Visitei o google via URL: %s' % response.url)

Page 25: Sobre o workshop "Raspagem de dados para mulheres"

Técnicas para coleta de dados estruturados

Dados estruturados: formatados como XML e

JSON

Page 26: Sobre o workshop "Raspagem de dados para mulheres"

APIs - provedores dos dadose

Libs - manipular XML/JSON

Técnicas para coleta de dados estruturados

Page 27: Sobre o workshop "Raspagem de dados para mulheres"

Educação Dados Abertos BR

Page 28: Sobre o workshop "Raspagem de dados para mulheres"

Educação Dados Abertos BR

Page 29: Sobre o workshop "Raspagem de dados para mulheres"

Educação Dados Abertos BR

from urllib.request import urlopenimport csvimport 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]

Page 30: Sobre o workshop "Raspagem de dados para mulheres"

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)

Page 32: Sobre o workshop "Raspagem de dados para mulheres"

Facebook API - Criar App

Page 33: Sobre o workshop "Raspagem de dados para mulheres"

Facebook API - Criar App

Page 34: Sobre o workshop "Raspagem de dados para mulheres"

Facebook API - Criar App

Page 35: Sobre o workshop "Raspagem de dados para mulheres"

Facebook API - Criar App

Page 36: Sobre o workshop "Raspagem de dados para mulheres"

Facebook API - Docs e Ferramentas

https://developers.facebook.com/docs/graph-api

https://developers.facebook.com/tools/explorer

Page 37: Sobre o workshop "Raspagem de dados para mulheres"

Facebook API - Código

# configurado no facebookapp_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 tokenaccess_token = url.read().decode('utf-8')

Page 38: Sobre o workshop "Raspagem de dados para mulheres"

Facebook API - Código

# URL para obter dadosapi_url = 'https://graph.facebook.com/'page_id = 'PyLadiesSP'

# Obtenção de postsurl_para_obter_posts = api_url + page_id + '?fields=posts&' + access_token

# Obtenção de likes de um posturl_para_obter_posts = api_url + post_id + '?fields=likes&' + access_token

Page 39: Sobre o workshop "Raspagem de dados para mulheres"

Facebook API - JSON

Page 40: Sobre o workshop "Raspagem de dados para mulheres"

Facebook API - JSON

# Obtenção dos postsurl = urlopen(url_para_obter_posts)json_posts = url.read().decode('utf-8')

# Converte JSON para Dictdict_posts = json.loads(json_posts)

Page 41: Sobre o workshop "Raspagem de dados para mulheres"

Twitter APP

Page 42: Sobre o workshop "Raspagem de dados para mulheres"

Twitter APP

Consumer Key

Consumer Secret

Access Token

Access Token Secret

Page 43: Sobre o workshop "Raspagem de dados para mulheres"

Twitter Rest API$ pip install TwitterAPI

from TwitterAPI import TwitterAPI, TwitterRestPager

search_term = 'pizza'consumer_key = # sua consumer keyconsumer_secret = # sua consumer secretaccess_token = # sua access tokenaccess_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()))

Page 44: Sobre o workshop "Raspagem de dados para mulheres"

Twitter Rest API

Page 45: Sobre o workshop "Raspagem de dados para mulheres"

Twitter API - Docs e Ferramentas

https://apps.twitter.com/

https://dev.twitter.com/rest/public

Page 46: Sobre o workshop "Raspagem de dados para mulheres"

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: [email protected]

● telegram: @Patymori

● fb: https://www.facebook.com/patricia.morimoto