Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Web Scraping Python + BeautifulSoup

Web Scraping Python + BeautifulSoup

Que es Web Scraping
Como utilizarla con Python y BeautifulSoup
Que es el ROBOTS.TXT

Valery Briz

August 27, 2017
Tweet

More Decks by Valery Briz

Other Decks in Programming

Transcript

  1. Scrape = Raspar, Escarbar

    View full-size slide

  2. El termino se utiliza ya que para obtener la
    información no lo hacemos por medio de un
    servicio restful o descargando algo de la página
    sino escudriñando en la información publica que
    nos dan, "escarbando" el sitio web para obtener
    lo que alli se presenta.

    View full-size slide

  3. • Marketing de contenidos
    • Visibilidad en Redes Sociales
    • Visibilidad de Marca en Internet
    • Big Data

    View full-size slide

  4. Algo que hay que tomar en cuenta es que hacer scraping
    de una página web puede desacatar sus terminos de
    servicio.
    Por lo que es importante asegurarse de que ese no es el
    caso, por ejemplo Twitter prohibe completamente hacer
    scraping en su página.
    Los dueños de sitios web pueden usar un archivo
    /robots.txt para darle instrucciones a los bots acerca de su
    sitio web; este es llamado The Robots Exclusion Protocol.

    View full-size slide

  5. Si un robot quiere visitar el sitio Web
    http://www.ejemplo.com/index.html
    Antes de eso revisa el
    http://www.ejemplo.com/robots.txt, y encuentra algo como
    esto:
    El "User-agent: *" significa que esta sección aplica a todos
    los robots. El "Disallow: /" le indica al robot que no esta
    permitido obtener información de ningúna de las páginas
    de este sitio.
    User-agent: *
    Disallow: /

    View full-size slide

  6. Hay que tomar en cuenta que los robots podrían ignorar
    el /robots.txt especialmente si son robots de malware que
    buscan vulnerabilidades en la seguridad.
    A demás de ello hay que estar consientes de que el
    /robots.txt es público, por lo que cualquiera podría ver que
    es lo que no quieres mostrar.
    Por lo que el /robots.txt no sirve para ocultar información.

    View full-size slide

  7. Podemos encontrar información de algunos Robots
    registrados en el siguiente link:
    http://www.robotstxt.org/db.html
    En el /robots.txt podemos establecer que permisos le
    damos a estos robots, por nombre o bien bloquearlos.
    Sin embargo el robot podría ignorar esto.

    View full-size slide

  8. Imagina una vida sin
    Google, o sin Bing que
    según la información que
    ronda en internet, hace
    scraping a Google para
    obtener algunos de sus
    datos.

    View full-size slide

  9. • Terminos y Condiciones de Servicio
    • Contenido Público

    View full-size slide

  10. Podemos diseñar un robot que haga un scraping
    de datos concretos de una web y los podamos
    utilizar para generar nuestro propio contenido.

    View full-size slide

  11. Podemos utilizar los datos de
    un scraping para interactuar a
    través de un robot con usuarios
    en redes sociales.
    Por ejemplo: crear un bot en
    instagram que seleccione los
    links de cada foto y luego
    programar un comentario en
    cada entrada.

    View full-size slide

  12. A través del scraping podemos
    automatizar la posición por la que
    varios artículos de nuestra web se
    posicionan en Google o, por
    ejemplo, controlar la presencia
    del nombre de nuestra marca en
    determinados foros.

    View full-size slide

  13. A veces es necesario obtener una gran cantidad de
    datos desde una o varias páginas sin embargo
    hacerlo manualmente es bastante complicado.

    View full-size slide

  14. Python
    BeautifulSoup4

    View full-size slide

  15. $ easy_install pip
    $ pip install BeautifulSoup4

    View full-size slide






  16. First Scraping
    Hello World


    View full-size slide

  17. 1. : Los documentos HTML deben iniciar con
    una declaración de tipo.
    2. El documento HTML esta contenido en and .
    3. El meta y los scripts estan contenidos entre y .
    4. La parte Visible esta contenida entre y .
    5. Los titulos se definen con tags hasta .
    6. Los parrafos tienen tag .
    De ello obtendremos algo como lo siguiente:
    .

    View full-size slide

  18. # importar las librerias
    import requests
    from bs4 import BeautifulSoup
    # especificar el URL
    URL = ‘http://jarroba.com/'
    # Realizamos la petición a la web
    req = requests.get(URL)

    View full-size slide

  19. #Comprobamos que la petición
    #nos devuelve un Status Code = 200
    status_code = req.status_code
    if status_code == 200:
    # Pasamos el contenido HTML de la web a un
    #objeto BeautifulSoup()
    html = BeautifulSoup(req.text, "html.parser")

    View full-size slide

  20. # Obtenemos todos los divs donde están las entradas
    #entradas = html.find_all('div', {'class': 'col-md-4 col-xs-12'})
    # Recorremos todas las entradas para extraer
    #el título, autor y fecha
    for item, entrada in enumerate(entradas):

    View full-size slide

  21. # Con el método "getText()" no nos devuelve el HTML
    titulo = entrada.find('span', {'class': 'tituloPost'}).getText()
    autor = entrada.find('span', {'class': 'autor'})
    fecha = entrada.find('span', {'class': 'fecha'}).getText()
    # Imprimo el Título, Autor y Fecha de las entradas
    print "%d - %s | %s | %s" % (i + 1, titulo, autor, fecha)
    else:
    print "Status Code %d" % status_code

    View full-size slide

  22. El resultado de http://jarroba.com/ sería algo como lo
    siguiente:
    1 - Sistema de numeración binario | Por: Ramón Invarato | 28-Jul-2017
    2 - venv (entornos virtuales) en python | Por: Dionisio Cortes | 25-Jun-2017
    3 - Como construir el JDK de Java 9 | Por: Dionisio Cortes | 03-Jun-2017
    4 - Patrón Singleton en Python, con ejemplos | Por: Dionisio Cortes | 18-
    May-2017
    5 - Inferencia tipos Java: El operador diamante | Por: Dionisio Cortes | 06-
    May-2017
    6 - Gson (JSON) en Java, con ejemplos | Por: Ricardo Moya | 02-May-2017
    7 - Unidades de medida de la información | Por: Ramón Invarato | 01-May-
    2017
    8 - 6 formas de mejorar el rendimiento en python | Por: Dionisio Cortes | 25-
    Abr-2017
    9 - Scraping anónimo por la red TOR | Por: Ricardo Moya | 12-Abr-2017

    View full-size slide