• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Aula WebCrawlers com Regex - PyCursos
 

Aula WebCrawlers com Regex - PyCursos

on

  • 3,055 views

Aula sobre construção de webcrawlers utilizando expressões regulares e Python...

Aula sobre construção de webcrawlers utilizando expressões regulares e Python
Instrutor: Marcel Caraciolo
Mais informações sobre o restante do curso em:
http://www.pycursos.com/regex

Statistics

Views

Total Views
3,055
Views on SlideShare
1,218
Embed Views
1,837

Actions

Likes
0
Downloads
31
Comments
0

3 Embeds 1,837

http://www.pycursos.com 1789
http://blog.recday.com 46
http://www.linkedin.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Aula WebCrawlers com Regex - PyCursos Aula WebCrawlers com Regex - PyCursos Presentation Transcript

    • WebCrawlers com Python e Regex Marcel Pinheiro Caraciolo Python  Aula  Extra  1
    •     O que são webcrawlers ? WebCrawlers  são  programas  de  computador  que  percorrem  a  internet  de  forma  automa>zada  e  metódica.    Também  chamados  de  bots  ou  spiders,  são  muito  u>lizados  em  sites  de  busca  como  Google  para  indexar  as  páginas  web  em  sua  base  de  dados.   Arquitetura  de  um  WebCrawler   Python  Aula  Extra   2
    • O que são expressões regulares ? Chamado  também  de  regex  ou  regexp  Ferramenta  eficiente  para  processamento  de  palavras  em  texto  por  meio  de  casamento  de  padrões  Linguagem  formal  que  pode  ser  interpretada  por  um  processador  de  expressões  regulares  ou  por  um  programa  que  iden>fica  partes  do  texto  que  “casam”  com  uma  especificação  provida.  -­‐  Wikipedia   Python  Aula  Extra  3
    • O que são expressões regulares ? Também  podemos  afirmar  que  é:    •  Uma  maneira  de  procurar  um  texto  que  você  não   lembra  exatamente  como  é,  mas  tem  ideia  das   variações  possíveis;    •  Uma  maneira  de  procurar  um  trecho  em  posições   específicas  como  no  começo  ou  no  fim  de  uma  linha,   ou  palavra;    •  Uma  maneira  de  um  programador  especificar   padrões  complexos  que  podem  ser  procurados  e   casados  em  uma  cadeia  de  caracteres;     Python  Aula  Extra  4
    • Expressões Regulares Representação formal de um autômato finito, com o objetivo dedeterminar um padrão de texto. ^[0-9]+. [0-9]*|. [0-9]+$ Leitura atômica da esquerda para a direita Python  Aula  Extra  5
    • Onde são aplicados ? Busca  ou  validação  de  um  padrão  de  texto  que  pode  ser  variável  como  datas,  horários,  números  IP,  endereços,  dados  de  uma  coluna  N  de  texto,  dados  que  estão  entre  tags,  RG,  CPF,  cartão  de  crédito,  etc.   Como  achar  apenas  os  usuários  que                    05:15    ernesto   acessaram  o  sistema    08:39    ricardo   No  período  da  tarde  (meio-­‐dia  às  6)  ?    10:32    patricia    14:59    gabriel   Resposta:  ^1[2-­‐8]    16:27    carla    22:23    marcelo   Python  Aula  Extra   6
    • Construindo um Crawler - Correios Os  Correios  brasileiro  possui  um  website  que  provê  o  rastreamento  de  encomendas  via  sedex,  carta  registrada,  pac,  etc.    Este  site  é  gratuito  e  informa  o  status  atual  da  encomenda,  isto  é,  se  já  foi  entregue,  se  já  foi  enviado  e  por  qual  localidade  ou  agência  se  encontra.   Python  Aula  Extra   7
    • Nesta aula aprenderemos Como  podemos  construir  um  simples  webcrawler  usando  expressões  regulares  para  rastreamento  de  encomendas  usando  Python.     Python  Aula  Extra   8
    • Disclaimer!! Esta  aula  tem  como  obje>vo  apenas  fins  didá>cos  a  construção  deste  crawler;    De   hipotése   alguma   incen>vamos   o   uso  indevido  ou  PAGO  desta  ferramenta.  Os  dados  são  públicos!!!    N ã o   n o s   r e s p o n s a b i l i z a m o s   p e l o   u s o  inapropriado   deste   crawler.     Recomendo  inclusive   u>lizar   as   ferramentas   fornecidas   pelo  site  oficial  dos  correios  brasileiros;         Python  Aula  Extra   9
    • Construindo o Downloader O  Primeiro  passo  é  construir  o  mecanismo  de  fazer  o  download  do  resultado  dos  correios  após  a  consulta  do  código  de  rastreamento  como  parâmetro.         hmps://gist.github.com/2866283   Python  Aula  Extra   10
    • Construindo o Downloader Adicionando  a  extração  do  html  por  meio  do  módulo  urllib  em  python.       hmps://gist.github.com/2866483   Python  Aula  Extra   11
    • Construindo o Downloader Resultado  da  primeira  etapa:   <table    border  cellpadding=1  hspace=10>   <colgroup  style=font:8pt  Tahoma;color=Black  valign=top><colgroup  style=font:8pt  Tahoma;  color=Navy><colgroup  style=font:8pt  Tahoma;color=Maroon>     <tr>   <td><font  FACE=Tahoma  color=#CC0000  size=2><b>Data</b></font></td>   <td><font  FACE=Tahoma  c  olor=#CC0000  size=2><b>Local</b></font></td>   <td><font  FACE=Tahoma  c  olor=#CC0000  size=2><b>Situa??o</b></font></td>   </tr>   <tr><td  rowspan=1>25/04/2012  17:36</td><td>CDD  CACOAL  -­‐  CACOAL/RO</td><td><FONT  COLOR="5F9F9F">Entrega  Efetuada</font></td></tr>   <tr><td  rowspan=1>25/04/2012  09:04</td><td>CDD  CACOAL  -­‐  CACOAL/RO</td><td><FONT  COLOR="007FFF">Saiu  para  entrega</font></td></tr>   <tr><td  rowspan=2>23/04/2012  12:46</td><td>CTCE  PORTO  VELHO  -­‐  PORTO  VELHO/RO</td><td><FONT  COLOR="000000">Encaminhado</font></td></tr>   <tr><td  colspan=2>Em  tr?nsito  para  CDD  CACOAL  -­‐  CACOAL/RO</td></tr>   <tr><td  rowspan=2>19/04/2012  14:55</td><td>CTE  SAUDE  -­‐  SAO  PAULO/SP</td><td><FONT  COLOR="000000">Encaminhado</font></td></tr>   <tr><td  colspan=2>Encaminhado  para  CTCE  PORTO  VELHO  -­‐  PORTO  VELHO/RO</td></tr>   <tr><td  rowspan=1>18/04/2012  21:38</td><td>CTE  SAUDE/GCCAP  -­‐  SAO  PAULO/SP</td><td><FONT  COLOR="000000">Postado</font></td></tr>   <tr><td  rowspan=2>18/04/2012  19:11</td><td>CEE  MOEMA  -­‐  SAO  PAULO/SP</td><td><FONT  COLOR="000000">Encaminhado</font></td></tr>   <tr><td  colspan=2>Em  tr?nsito  para  CTE  SAUDE  -­‐  SAO  PAULO/SP</td></tr>   </TABLE>   Python  Aula  Extra   12
    • Construindo o Downloader O  Módulo  re  permite  a  construção  de  expressões  regulares.  O  nosso  obje>vo  é  extrair  a  tabela  com  os  status  das  encomendas.       Retorna  tudo  entre  as  tags   <table>  </TABLE>   hmps://gist.github.com/2872334   Python  Aula  Extra   13
    • Construindo o Downloader Resultado  da  segunda  etapa:   <table    border  cellpadding=1  hspace=10>   <colgroup  style=font:8pt  Tahoma;color=Black  valign=top><colgroup  style=font:8pt  Tahoma;  color=Navy><colgroup  style=font:8pt  Tahoma;color=Maroon>     <tr>   <td><font  FACE=Tahoma  color=#CC0000  size=2><b>Data</b></font></td>   <td><font  FACE=Tahoma  c  olor=#CC0000  size=2><b>Local</b></font></td>   <td><font  FACE=Tahoma  c  olor=#CC0000  size=2><b>Situa??o</b></font></td>   </tr>   <tr><td  rowspan=1>25/04/2012  17:36</td><td>CDD  CACOAL  -­‐  CACOAL/RO</td><td><FONT  COLOR="5F9F9F">Entrega  Efetuada</font></td></tr>   <tr><td  rowspan=1>25/04/2012  09:04</td><td>CDD  CACOAL  -­‐  CACOAL/RO</td><td><FONT  COLOR="007FFF">Saiu  para  entrega</font></td></tr>   <tr><td  rowspan=2>23/04/2012  12:46</td><td>CTCE  PORTO  VELHO  -­‐  PORTO  VELHO/RO</td><td><FONT  COLOR="000000">Encaminhado</font></td></tr>   <tr><td  colspan=2>Em  tr?nsito  para  CDD  CACOAL  -­‐  CACOAL/RO</td></tr>   <tr><td  rowspan=2>19/04/2012  14:55</td><td>CTE  SAUDE  -­‐  SAO  PAULO/SP</td><td><FONT  COLOR="000000">Encaminhado</font></td></tr>   <tr><td  colspan=2>Encaminhado  para  CTCE  PORTO  VELHO  -­‐  PORTO  VELHO/RO</td></tr>   <tr><td  rowspan=1>18/04/2012  21:38</td><td>CTE  SAUDE/GCCAP  -­‐  SAO  PAULO/SP</td><td><FONT  COLOR="000000">Postado</font></td></tr>   <tr><td  rowspan=2>18/04/2012  19:11</td><td>CEE  MOEMA  -­‐  SAO  PAULO/SP</td><td><FONT  COLOR="000000">Encaminhado</font></td></tr>   <tr><td  colspan=2>Em  tr?nsito  para  CTE  SAUDE  -­‐  SAO  PAULO/SP</td></tr>   </TABLE>   Python  Aula  Extra   14
    • Construindo o Downloader Mas  precisamos  extrair  estas  linhas     <table    border  cellpadding=1  hspace=10>   <colgroup  style=font:8pt  Tahoma;color=Black  valign=top><colgroup  style=font:8pt  Tahoma;  color=Navy><colgroup  style=font:8pt  Tahoma;color=Maroon>     <tr>   <td><font  FACE=Tahoma  color=#CC0000  size=2><b>Data</b></font></td>   <td><font  FACE=Tahoma  c  olor=#CC0000  size=2><b>Local</b></font></td>   <td><font  FACE=Tahoma  c  olor=#CC0000  size=2><b>Situa??o</b></font></td>   </tr>   <tr><td  rowspan=1>25/04/2012  17:36</td><td>CDD  CACOAL  -­‐  CACOAL/RO</td><td><FONT   COLOR="5F9F9F">Entrega  Efetuada</font></td></tr>   <tr><td  rowspan=1>25/04/2012  09:04</td><td>CDD  CACOAL  -­‐  CACOAL/RO</td><td><FONT   COLOR="007FFF">Saiu  para  entrega</font></td></tr>   <tr><td  rowspan=2>23/04/2012  12:46</td><td>CTCE  PORTO  VELHO  -­‐  PORTO  VELHO/RO</ td><td><FONT  COLOR="000000">Encaminhado</font></td></tr>   <tr><td  colspan=2>Em  tr?nsito  para  CDD  CACOAL  -­‐  CACOAL/RO</td></tr>   <tr><td  rowspan=2>19/04/2012  14:55</td><td>CTE  SAUDE  -­‐  SAO  PAULO/SP</td><td><FONT   COLOR="000000">Encaminhado</font></td></tr>   <tr><td  colspan=2>Encaminhado  para  CTCE  PORTO  VELHO  -­‐  PORTO  VELHO/RO</td></tr>   <tr><td  rowspan=1>18/04/2012  21:38</td><td>CTE  SAUDE/GCCAP  -­‐  SAO  PAULO/SP</ td><td><FONT  COLOR="000000">Postado</font></td></tr>   <tr><td  rowspan=2>18/04/2012  19:11</td><td>CEE  MOEMA  -­‐  SAO  PAULO/SP</td><td><FONT   COLOR="000000">Encaminhado</font></td></tr>   <tr><td  colspan=2>Em  tr?nsito  para  CTE  SAUDE  -­‐  SAO  PAULO/SP</td></tr>   </TABLE>   Python  Aula  Extra   15
    • Construindo o Parser O  próximo  passo  é  construirmos  o  parser  que  irá  extrair  os  dados  das  encomendas.    Uma  boa  dica  é  ir  extraindo  por  partes  de  nossa  tabela.     hmps://gist.github.com/2872517   Python  Aula  Extra   16
    • Construindo uma simples Storage - API Para  armazenamento  vamos  expor  o  status  da  nossa  encomenda    no  formato  JSON  para  ser  disponibilizada  por  exemplo  no  futuro  em  uma  webservice!     hmps://gist.github.com/2872533   Python  Aula  Extra   17
    • Construindo uma simples Storage - API Resposta  do  script:    $  python  correios.py  PH058838637BR  status  {"data":  "25/04/2012  17:36",  "local":  "CDD  CACOAL  -­‐  CACOAL/RO",  "situacao":  "Entrega  Efetuada"}     Python  Aula  Extra   18
    • Extra: Webservice com Flask! Podemos  construir  rapidamente  um  simples  servidor  web  para  servir  esta  mini  API  REST!     hmps://gist.github.com/2872583   hmp://127.0.0.1:5000/track/PH058838637BR   Flask  é  um  micro-­‐framework  web  e  pode  ser  baixado  em  :    hFp://flask.pocoo.org/               Python  Aula  Extra   19
    • WebCrawlers com Python e Regex Marcel Pinheiro Caraciolo Python  Aula  Extra  20