[go: up one dir, main page]

0% encontró este documento útil (0 votos)
12 vistas3 páginas

SP+ +Web+Scraping+Formulario+2.0

El documento proporciona una guía sobre web scraping utilizando herramientas como Beautiful Soup, Selenium y Scrapy. Se discuten conceptos básicos de HTML, la sintaxis de XPath y ejemplos prácticos para localizar elementos en una página web. Además, se explican las diferencias entre Selenium 3 y 4, así como la creación de proyectos y spiders en Scrapy.

Cargado por

Leonardo Rivas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
12 vistas3 páginas

SP+ +Web+Scraping+Formulario+2.0

El documento proporciona una guía sobre web scraping utilizando herramientas como Beautiful Soup, Selenium y Scrapy. Se discuten conceptos básicos de HTML, la sintaxis de XPath y ejemplos prácticos para localizar elementos en una página web. Además, se explican las diferencias entre Selenium 3 y 4, así como la creación de proyectos y spiders en Scrapy.

Cargado por

Leonardo Rivas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 3

Web Scraping

Formulario

BS4 | Selenium | Scrapy

Frank Andrade
Web Scraping “Hermanos” son nodos con los mismos padres.
Es recomendable para principiantes usar IDs para
encontrar elementos y si no los hay se recomienda
XPath

Formulario
Necesitamos aprender XPath para hacer web
construir un XPath. scraping con Selenium y Scrapy.
Beautiful Soup
El web scraping nos permite extraer data de la web. Antes de XPath Sintaxis
aprender Beautiful Soup, Selenium o Scrapy, vamos a revisar
Flujo de Trabajo Un XPath usualmente contiene un tag, nombre de
Importar librerías atributo y valor de atributo.
conceptos básicos de HTML. from bs4 import BeautifulSoup
import requests //tag[@Atributo="Valor"]
HTML básico para Web Scraping Obtener páginas
Analicemos el siguiente elemento HTML. result=requests.get("www.google.com") Veamos algunos ejemplos de como localizar el
result.status_code #obtener status elemento article, el titulo de la película y transcript
Tag Nombre Valor Tag result.headers #obtener encabezados del código HTML que vimos antes.
apertura Atributo Atributo cierre
Contenido de la página
contenido = result.text //article[@class="main-article"]
<h1 class="title"> Titanic (1997) </h1> //h1
Crear soup
soup=BeautifulSoup(contenido,"lxml") //div[@class="full-script"]
Atributo Contenido Afectado
HTML en formato legible
Elemento HTML print(soup.prettify()) XPath Funciones y Operadores
XPath funciones
Este es solo un elemento HTML, pero el documento HTML detrás Encontrar un elemento
soup.find(id="mi_id") //tag[contains(@Atributo, "Valor")]
de una página web tiene varios elmentos como este.
Encontrar elementos XPath Operadores: and, or
Código HTML ejemplo
soup.find_all("a")
<article class="main-article"> soup.find_all("a","css_class") //tag[(expresion 1) and (expresion 2)]
<h1> Titanic (1997) </h1> soup.find_all("a",class_="mi_class")
<p class="plot"> 84 years later ... </p> soup.find_all("a",attrs={"class":
"mi_class"}) XPath Caracteres Especiales
<div class="full-script"> 13 meters. You ... </div> Obtener texto
Selecciona los hijos del nodo ubicado a la
</article> ejemplo=elemento.get_text() /
ejemplo=elemento.get_text(strip=True, izquiera de este caracter
El documento HTML está estructurado con "nodos". Cada separator= ' ') Especifica que el nodo a emparejar puede
Obtener atributos // estar en cualquier nivel del documento
rectángulo debajo representa un nodo (elemento, atributo o texto) ejemplo = elemento.get('href')
Especifica que el contexto actual debería
Elemento Raíz
<article>
Nodo Padre . ser usado (el nodo referencia)
..
Estas son mis tutoriales y cursos
- Guías de Medium/Videos de YouTube
Selecciona a un nodo padre
Caracter comodín que selecciona todos los
Elemento Atributo Elemento Elemento - Curso de Web Scraping * elementos sin importar el nombre
<h1> class="main-article" <p> <div>
Hermanos - Curso de Data Science @ Selecciona un atributo
- Curso de Automatización () Indica una agrupación dentro de un XPath
Texto Atributo Texto Atributo Texto
Titanic (1997) class="plot" 84 years later ... class="full-script"" 13 meters. You ...
Frank Andrade: www.youtube.com/andradefrank [n] Indica que un nodo con index "n" debe ser
seleccionado
Selenium 4 Scrapy
Ten en cuenta que hay algunos cambios entre las versiones de Selenium 3.x Scrapy es el framework más complete de web scraping en Python. Para
y Selenium 4. configurarlo revisa la documentación de Scrapy.
Importar librerías
from selenium import webdriver Crear un Proyecto y Spider
from selenium.webdriver.chrome.service import Service Para crear un nuevo proyecto, corre el siguiente comando en el terminal o cmd
scrapy startproject mi_primer_spider
web="www.google.com" Para crear un nuevo spider, primero cambia el directorio
path='introduce ruta del chromedriver' cd mi_primer_spider
service = Service(executable_path=path) # selenium 4 Crear un spider
driver = webdriver.Chrome(service=service) # selenium 4 scrapy genspider ejemplo ejemplo.com
driver.get(web)
La plantilla básica
Nota: Cuando creamos un spider, obtenemos una plantilla con el siguiente contenido.
driver = webdriver.Chrome(path) # selenium 3.x
import scrapy
Encontrar un elemento
driver.find_element(by="id", value="...") # selenium 4 class ExampleSpider(scrapy.Spider):
driver.find_element_by_id('nombre-id') # selenium 3.x name = 'ejemplo'
allowed_domains = ['ejemplo.com'] Clase
Encontrar elements start_urls = ['http://ejemplo.com/']
driver.find_elements(by="xpath", value="...") # selenium 4
driver.find_elements_by_xpath("escribir-xpath") # selenium 3.x
def parse(self, response):
Método Parse
Cerrar driver pass
driver.quit()
La clase es contruida con la data que introducimos en el comando previo, pero el
Obtener el texto método parse tenemos que construirlo nosotros.
data = elemento.text
Buscando elementos
Espera Implícita Para buscar elementos con Scrapy, usa el argumento "response" del método parse
import time
time.sleep(2) response.xpath('//tag[@Atributo="Valor"]')
Obtener texto
Espera Explícita Para obtener el elemento texto usamos text() y luego .get() o .getall(). Por ejemplo:
from selenium.webdriver.common.by import By response.xpath(‘//h1/text()’).get()
from selenium.webdriver.support.ui import WebDriverWait response.xpath(‘//tag[@Atributo=”Valor”]/text()’).getall()
from selenium.webdriver.support import expected_conditions as EC
Devolver la data extraída
WebDriverWait(driver,5).until(EC.element_to_be_clickable((By.ID, Para ver la data extraída tenemos que usar la palabra clave yield
'id_name'))) #esperar 5 segundos hasta poder encontrar elemento
def parse(self, response):
Opciones: Headless mode, cambiar tamaño de ventana title = response.xpath(‘//h1/text()’).get()
from selenium.webdriver.chrome.options import Options
opciones = Options() # Devolver data extraída
opciones.headless = True yield {'titles': title}
opciones.add_argument('window-size=1920x1080')
driver = webdriver.Chrome(path,options=opciones) Correr el spider y exportar data a CSV o JSON
scrapy crawl ejemplo
scrapy crawl ejemplo -o nombre_archivo.csv
scrapy crawl ejemplo -o nombre_archivo.json

También podría gustarte