Upload
patricia-minamizawa
View
57
Download
5
Embed Size (px)
Citation preview
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
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
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: [email protected]
● telegram: @Patymori
● fb: https://www.facebook.com/patricia.morimoto