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. View Slide

  2. Scrape = Raspar, Escarbar

    View Slide

  3. 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 Slide

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

    View Slide

  5. 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 Slide

  6. 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 Slide

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

  8. 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 Slide

  9. 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 Slide

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

    View Slide

  11. 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 Slide

  12. 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 Slide

  13. 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 Slide

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

    View Slide

  15. Python
    BeautifulSoup4

    View Slide

  16. $ easy_install pip
    $ pip install BeautifulSoup4

    View Slide






  17. First Scraping
    Hello World


    View Slide

  18. 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 Slide

  19. # 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 Slide

  20. #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 Slide

  21. # 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 Slide

  22. # 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 Slide

  23. 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 Slide

  24. View Slide