Herramientas de usuario

Herramientas del sitio


informatica:programacion:python:web_scraping

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:programacion:python:web_scraping [2021/05/22 11:48] – [XPath] tempwininformatica:programacion:python:web_scraping [2022/01/15 16:26] (actual) – [Recursos] tempwin
Línea 21: Línea 21:
  
   * [[http://xpather.com/|XPath online real-time tester and generator for XML & HTML]]   * [[http://xpather.com/|XPath online real-time tester and generator for XML & HTML]]
 +  * [[https://devhints.io/xpath|Xpath cheatsheet]]
  
 Buscar en cualquier parte del documento: Buscar en cualquier parte del documento:
Línea 73: Línea 74:
 //h1[contains(text(), "This is")]/@class //h1[contains(text(), "This is")]/@class
 </code> </code>
 +
 +<WRAP center round tip 60%>
 +En los navegadores Google Chrome y Mozilla Firefox se pueden probar expresiones XPath desde la consola de las herramientas de desarrolladores introduciendo las expresiones en ''$x()'': ''$x(%%"//h2[1]"%%)''
 +</WRAP>
 +
 ==== Funciones ==== ==== Funciones ====
  
Línea 94: Línea 100:
  
 Nos buscará todos los elementos ''h1'' que contengan el texto ''Hola, mundo''. Nos buscará todos los elementos ''h1'' que contengan el texto ''Hola, mundo''.
 +
 ===== Descargar ficheros ===== ===== Descargar ficheros =====
  
Línea 103: Línea 110:
 import requests import requests
  
-res requests.get("https://example.org/fichero")+# Con la petición vamos a personalizar la cabecera HTTP para 
 +# que el servidor "crea" que estamos utilizando un navegador web 
 +headers 
 +    "user-agent": "Mozilla/5.(X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36" 
 +
 + 
 +url = "https://example.org/page" 
 + 
 +res = requests.get(url, headers=headers)
  
 # 'res' es el objeto con la respuesta # 'res' es el objeto con la respuesta
Línea 113: Línea 128:
 # 200 -> Si ha ido bien # 200 -> Si ha ido bien
  
-El contenido de la descarga está en:+El contenido de la descarga está en:
 res.text res.text
 </code> </code>
  
 ===== Procesar HTML ===== ===== Procesar HTML =====
 +
 +Tenemos dos posibilidades interesantes con los siguientes módulos de Python:
 +
 +  * [[https://lxml.de/|lxml]]
 +  * [[https://www.crummy.com/software/BeautifulSoup/|Beautiful Soup]]
 +
 +Hay una tercera posibilidad que es **Scrapy**, que es ya todo un framework para navegar por páginas, extraer información y moverse por las diferentes páginas de un mismo sitio.
 +
 +La ventaja de Beautiful Soup frente a lxml es poder movernos por elementos sin conocer su id o clase, solo con tener un punto de partida. Ejemplos de esto es el método ''find_next_sibling()''
  
 Es necesario instalar BeautifulSoup: ''pip install beautifulsoup4'' Es necesario instalar BeautifulSoup: ''pip install beautifulsoup4''
Línea 239: Línea 263:
  
   * [[https://towardsdatascience.com/everything-you-need-to-know-about-web-scraping-6541b241f27e|Everything you Need to Know About Web Scraping]]   * [[https://towardsdatascience.com/everything-you-need-to-know-about-web-scraping-6541b241f27e|Everything you Need to Know About Web Scraping]]
 +  * [[https://automatetheboringstuff.com/2e/chapter12/|Automate the Boring Stuff with Python: WEB SCRAPING]]
 +  * [[https://toscrape.com/|Web Scraping Sandbox]]
informatica/programacion/python/web_scraping.1621676909.txt.gz · Última modificación: por tempwin