ADD dia 11
This commit is contained in:
parent
3d828e7319
commit
ce0b29c7c8
69
dia_11/01_web_scraping_01.py
Normal file
69
dia_11/01_web_scraping_01.py
Normal 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())
|
37
dia_11/02_web_scraping_02.py
Normal file
37
dia_11/02_web_scraping_02.py
Normal 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()
|
46
dia_11/03_web_scraping_03.py
Normal file
46
dia_11/03_web_scraping_03.py
Normal 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
BIN
dia_11/mi_imagen.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 115 KiB |
3
dia_11/nul
Normal file
3
dia_11/nul
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
200
|
||||||
|
|
Loading…
Reference in New Issue
Block a user