ADD dia 11

This commit is contained in:
Manuel Vergara 2023-04-12 21:59:47 +02:00
parent 3d828e7319
commit ce0b29c7c8
5 changed files with 155 additions and 0 deletions

View File

@ -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())

View File

@ -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()

View File

@ -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')

BIN
dia_11/mi_imagen.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

3
dia_11/nul Normal file
View File

@ -0,0 +1,3 @@
200