diff --git a/dia_11/01_web_scraping_01.py b/dia_11/01_web_scraping_01.py new file mode 100644 index 0000000..b7af19d --- /dev/null +++ b/dia_11/01_web_scraping_01.py @@ -0,0 +1,69 @@ +""" +Web scraping básico + +Con las librerias beautifulsoup4, lxml y requests + +""" +import bs4 +import requests + +resultado = requests.get( + 'https://escueladirecta-blog.blogspot.com/2021/10/encapsulamiento-pilares-de-la.html') + +# el tipo nos muestra que es de tipo Response +print(type(resultado)) +print() + + +# Si intentamos imprimir el texto nos mostrará todo el contenido html, css ... +# print(resultado.text) + +# Para poder extraer datos necesitamos un parser (analizador sintáctico) +# como beautiful soup +# Necesitaremos el texto y el tipo de motor de parsing + +sopa = bs4.BeautifulSoup(resultado.text, 'lxml') + + +# Con lo cual, ahora en la variable ya no es un string +# y este modo de texto de tipo bs4 +# permite navegar mejor por él +print(type(sopa)) +print() + + +# Podemos escoger las etiquetas, por ejemplo title +print(sopa.select('title')) +print() + + +# Nos dará una lista, porque puede haber más de un elemento +# que podemos contar con len +print(f"Tiene {len(sopa.select('p'))} párrafos.") +print() + + +# Podemos seleccionar de la lista el índice del elemento +# que queremos y además pedir que nos devuelva tan solo +# el texto de dentro del elemento +print(sopa.select('p')[1].getText()) +print() + + +# Vamos a buscar un párrafo en concreto +parrafo_especial = sopa.select('p')[3].getText() +print(parrafo_especial) +print() + + +# Ahora vamos a coger elementos de la columna lateral +# Todos los títulos +titulos_columna_lateral = sopa.select('.sidebar-container article .post-title') +for title in titulos_columna_lateral: + print(title.getText()) + print() + +# Mostrar un párrafo concreto +parrafos_columna_lateral = sopa.select( + '.sidebar-container article .snippet-item') +print(parrafos_columna_lateral[0].getText()) diff --git a/dia_11/02_web_scraping_02.py b/dia_11/02_web_scraping_02.py new file mode 100644 index 0000000..996d37b --- /dev/null +++ b/dia_11/02_web_scraping_02.py @@ -0,0 +1,37 @@ +""" +Web scraping +Descargar imágenes + +""" +import bs4 +import requests + + +resultado = requests.get( + 'https://www.escueladirecta.com/courses') + + +# Para poder extraer datos necesitamos +# un parser (analizador sintáctico) +# como beautiful soup +# Necesitaremos el texto y el tipo de motor de parsing +sopa = bs4.BeautifulSoup(resultado.text, 'lxml') + +# Aislamos la url de la primera imagen +# que queremos descargar +imagen = sopa.select('.course-box-image')[0]['src'] +print(imagen) + +# Ahora cogemos el contenido del enlace +# (Tendrá un Response 200) +binario_imagen = requests.get(imagen) +# y mostramos el binario + +# print(binario_imagen.content) + +# Ahora preparamos un fichero para escribir +# wb significa "escribir binario" +# Abrimos el fichero, escribimos dentro y cerramos +f = open('mi_imagen.jpg', 'wb') +f.write(binario_imagen.content) +f.close() diff --git a/dia_11/03_web_scraping_03.py b/dia_11/03_web_scraping_03.py new file mode 100644 index 0000000..9389711 --- /dev/null +++ b/dia_11/03_web_scraping_03.py @@ -0,0 +1,46 @@ +""" +Web scraping básico + +Con las librerias beautifulsoup4, lxml y requests + +""" + +import bs4 +import requests + +raiz = 'http://books.toscrape.com/catalogue/page-' +extension = '.html' + + +def comprobar_enlaces(http, ext): + """ Comprobar si el enlace existe """ + + # Variables + enlaces = [] + fin_url = True + page = 0 + + # Bucle para formar url y añadir a una lista + while fin_url: + + page += 1 + page = str(page) + + enlace = http + page + ext + + resultado = requests.get(enlace) + + if resultado: + enlaces.append(enlace) + page = int(page) + break + else: + fin_url = False + + return enlaces + + +print(comprobar_enlaces(raiz, extension)) + + +# sopa = bs4.BeautifulSoup(resultado.text, 'lxml') diff --git a/dia_11/mi_imagen.jpg b/dia_11/mi_imagen.jpg new file mode 100644 index 0000000..39bb72e Binary files /dev/null and b/dia_11/mi_imagen.jpg differ diff --git a/dia_11/nul b/dia_11/nul new file mode 100644 index 0000000..2f249fb --- /dev/null +++ b/dia_11/nul @@ -0,0 +1,3 @@ + +200 +