Sobre o workshop "Raspagem de dados para mulheres"

Post on 08-Feb-2017

58 views 5 download

Transcript of Sobre o workshop "Raspagem de dados para mulheres"

Raspagem de Dadospara 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 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)

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 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

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 dadose

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 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]

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 - 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 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')

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

Facebook API - JSON

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)

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 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()))

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