Prerrequisitos: Introducción al web scrapping
Usando XPath
XPath funciona de manera muy similar a un sistema de archivos tradicional
Para acceder al archivo 1,
C:/File1
Del mismo modo, para acceder al archivo 2,
C:/Documents/User1/File2
Ahora considere una página web simple,
HTML
<html> <head> <title>My page</title> </head> <body> <h2>Welcome to my page<h2> <a href="www.example.com">page</a> <p>This is the first paragraph</p> <h2>Hello World</h2> </body> </html>
Esto se puede representar como un árbol XML de la siguiente manera,
Para obtener el texto dentro de la etiqueta < p> ,
XPath : html/body/p/text()
Result : This is the first paragraph
Para obtener un valor dentro del atributo < href> en el ancla o en la etiqueta < a> ,
XPath : html/body/a/@href
Result: www.example.com
Para obtener el valor dentro de la segunda etiqueta < h2> ,
XPath : html/body/h2[2]/text()
Result: Hello World
Para encontrar el XPath para un elemento particular en una página:
- Haga clic con el botón derecho en el elemento de la página y haga clic en Inspeccionar.
- Haga clic con el botón derecho en el elemento en la pestaña Elementos .
- Haga clic en copiar XPath .
Usando LXML
Enfoque paso a paso
- Usaremos requests.get para recuperar la página web con nuestros datos.
- Usamos html.fromstring para analizar el contenido usando el analizador lxml .
- Creamos la consulta XPath correcta y usamos la función lxml xpath para obtener el elemento requerido.
Ejemplo 1:
A continuación se muestra un programa basado en el enfoque anterior que utiliza una URL particular .
Python
# Import required modules from lxml import html import requests # Request the page page = requests.get('http://econpy.pythonanywhere.com/ex/001.html') # Parsing the page # (We need to use page.content rather than # page.text because html.fromstring implicitly # expects bytes as input.) tree = html.fromstring(page.content) # Get element using XPath buyers = tree.xpath('//div[@title="buyer-name"]/text()') print(buyers)
Producción:
Ejemplo 2:
Otro ejemplo para un sitio web de comercio electrónico, URL .
Python
# Import required modules from lxml import html import requests # Request the page page = requests.get('https://webscraper.io/test-sites/e-commerce/allinone') # Parsing the page tree = html.fromstring(page.content) # Get element using XPath prices = tree.xpath( '//div[@class="col-sm-4 col-lg-4 col-md-4"]/div/div[1]/h4[1]/text()') print(prices)
Producción:
Publicación traducida automáticamente
Artículo escrito por prakharalt y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA