Slide 1

Slide 1 text

Web Scraping con WordPress César Aquino Maximiliano - @cesjam7

Slide 2

Slide 2 text

¿Qué es Web Scraping? Web Scraping es una técnica utilizada mediante software para extraer información de sitios web.

Slide 3

Slide 3 text

Técnicas para hacer Web Scraping ■ Copy & Paste ■ Expresiones regulares ■ Protocolo HTTP ■ Parses HTML ■ Aplicaciones para Web Scraping

Slide 4

Slide 4 text

Técnicas para hacer Web Scraping ■ Copy & Paste ■ Expresiones regulares ■ Protocolo HTTP ■ Parses HTML ■ Aplicaciones para Web Scraping

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

Solicita información

Slide 8

Slide 8 text

Solicita información Obtiene información

Slide 9

Slide 9 text

Solicita información Obtiene información Filtra la información

Slide 10

Slide 10 text

Solicita información Obtiene información Filtra la información Procesa la información

Slide 11

Slide 11 text

Solicita información Obtiene información Filtra la información Procesa la información Guarda la información

Slide 12

Slide 12 text

Solicita información Obtiene información Filtra la información Procesa la información Guarda la información

Slide 13

Slide 13 text

PHP Simple HTML DOM Parser ■ A HTML DOM parser written in PHP5+ let you manipulate HTML in a very easy way! ■ Require PHP 5+. ■ Find tags on an HTML page with selectors just like jQuery. ■ Extract contents from HTML in a single line. http://simplehtmldom.sourceforge.net/

Slide 14

Slide 14 text

Ejemplo simple de cómo extraer usando PHP Simple HTML DOM Parser find('img') as $element) { echo $element->src.'
'; } // Find all links foreach($html->find('a') as $element) { echo $element->href.'
'; } ?>

Slide 15

Slide 15 text

Tres formas para obtener un DOM Object Hello!< /html>'); // Create a DOM object from a URL $html = file_get_html('http://jovenred.com/'); // Create a DOM object from a HTML file $html = file_get_html('test.htm'); ?>

Slide 16

Slide 16 text

Cómo buscar un elemento HTML find('a'); // Find (N)th anchor, returns element object or null if not found (zero based) $ret = $html->find('a', 0); // Find all
with the id attribute $ret = $html->find('div[id]'); // Find all
which attribute id=foo $ret = $html->find('div[id=foo]'); ?>

Slide 17

Slide 17 text

¿Y donde entra WordPress?

Slide 18

Slide 18 text

Solicita información Obtiene información Filtra la información Procesa la información Guarda la información

Slide 19

Slide 19 text

Cómo ingresar la información a nuestra base de datos con WordPress find('.post') as $element) { $title = $element->find('h2 a')->plaintext; $content = $element->find('p', 0)->plaintext; wp_insert_post( array( 'post_title' => $title; 'post_content' => $content; ) ); } ?>

Slide 20

Slide 20 text

Cómo ingresar la información a nuestra base de datos con WordPress find('.post') as $element) { $title = $element->find('h2 a')->plaintext; $content = $element->find('p', 0)->plaintext; wp_insert_post( array( 'post_title' => $title; 'post_content' => $content; ) ); } ?>

Slide 21

Slide 21 text

https://codex.wordpress.org/Function_Reference/wp_insert_post

Slide 22

Slide 22 text

#DataBomberos Data Bomberos Perú es una página no oficial que muestra información recolectada de la central de emergencias del Cuerpo General de Bomberos Voluntarios del Perú. La información es obtenida por la página Emergencias Diarias que comparte el Cuerpo de Bomberos de forma pública en el siguiente link http://www.bomberosperu.gob.pe/po_diario.asp. http://databomberos.com

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

#DataBomberos https://github.com/cesjam7/cbp-emergencies

Slide 25

Slide 25 text

#DataBomberos Emergencias del 14/05/2015 Emergencias por categoría Mapa de calor

Slide 26

Slide 26 text

Hora de codear Vamos a scrapear los resultados de búsqueda de Foursquare:

Slide 27

Slide 27 text

Hora de codear Vamos a scrapear los resultados de búsqueda de Foursquare: $html = file_get_html($_POST['link']); $c = 0; foreach($html->find('.contentHolder') as $result) { $c++; echo ''; echo ''.$c.''; echo ''.$result->find('.categoryName', 0)->plaintext.''; echo ''.$result->find('.venueName a', 0)->plaintext.''; echo ''; }

Slide 28

Slide 28 text

Muchas gracias ❏ Twitter: @cesjam7 ❏ Web Personal: cesar.pe ❏ Empresa: orange612.com ❏ Presentaciones: speakerdeck.com/cesjam7 ❏ Repositorios: github.com/cesjam7

Slide 29

Slide 29 text

Muchas gracias ❏ Twitter: @cesjam7 ❏ Blog: jovenred.com ❏ Empresa: orange612.com ❏ Presentaciones: speakerdeck.com/cesjam7 ❏ Repositorios: github.com/cesjam7 Recuerden: En caso de emergencia llamar al 1-1-6