Herramientas de usuario

Herramientas del sitio


python:webscraping

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
python:webscraping [2024/02/05 18:43] – [Encontrar elementos] albertopython:webscraping [2024/02/05 19:00] (actual) – [Encontrar elementos] alberto
Línea 115: Línea 115:
 Para obtener estos elementos usaremos el método **.select()**\\ Para obtener estos elementos usaremos el método **.select()**\\
  
-{{ :python:selectores_bs4.png?600 |}}+{{ :python:selectores_bs4.png?500 |}}
  
 Se pueden utilizar varios patrones de selectores para realizar búsquedas más sofisticadas, por ejemplo: //soup.select('p #author')// \\ Se pueden utilizar varios patrones de selectores para realizar búsquedas más sofisticadas, por ejemplo: //soup.select('p #author')// \\
Línea 125: Línea 125:
 También es posible obtener el texto que se encuentra asociado a un elemento HTML (el que aparece en la web) a través del método **.getText()**. También es posible obtener el texto que se encuentra asociado a un elemento HTML (el que aparece en la web) a través del método **.getText()**.
  
 +Suponemos el siguiente código HTML
 +<code html>
 +<!-- This is the example.html example file. -->
 +<html><head><title>The Website Title</title></head>
 +<body>
 +<p>Download my <strong>Python</strong> book from <a href="https://
 +inventwithpython.com">my website</a>.</p>
 +<p class="slogan">Learn Python the easy way!</p>
 +<p>By <span id="author">Al Sweigart</span></p>
 +</body></html>
 +</code>
 +
 +Podemos buscar elementos del siguiente modo, directamente en la terminal de python:
 <code python> <code python>
-import requests, bs4 +>>> import bs4 
-res requests.get('https://nostarch.com'+>>> exampleFile = open('example.html'
-res.raise_for_status() +>>> exampleSoup = bs4.BeautifulSoup(exampleFile.read()'html.parser'
-noStarchSoup bs4.BeautifulSoup(res.text, 'html.parser')+>>> elems = exampleSoup.select('#author'
 +>>> type(elems) # elems is a list of Tag objects. 
 +<class 'list'> 
 +>>> len(elems) 
 +
 +>>> type(elems[0]) 
 +<class 'bs4.element.Tag'> 
 +>>> str(elems[0]) # The Tag object as a string. 
 +'<span id="author">Al Sweigart</span>' 
 +>>> elems[0].getText(
 +'Al Sweigart' 
 +>>> elems[0].attrs 
 +{'id': 'author'
 +>>> pElems = exampleSoup.select('p'
 +>>> str(pElems[0]) 
 +'<p>Download my <strong>Python</strong> book from <a href="https:// 
 +inventwithpython.com">my website</a>.</p>' 
 +>>> pElems[0].getText(
 +'Download my Python book from my website.
 +>>> str(pElems[1]
 +'<p class="slogan">Learn Python the easy way!</p>' 
 +>>> pElems[1].getText(
 +'Learn Python the easy way!' 
 +>>> str(pElems[2]) 
 +'<p>By <span id="author">Al Sweigart</span></p>' 
 +>>> pElems[2].getText() 
 +'By Al Sweigart' 
 +</code>
  
-p_elems noStarchSoup.select('p'# Obtenemos todos los elementos 'p(párrafos+==== Obtener datos de atributos de elementos ==== 
-img_elems noStarchSoup.select('.img-responsive' # Obtenemos los elementos que son las imágenes de unas miniaturas +Para obtener fácilmente los valores de los atributos de un elemento (objeto tipo tag), podemos usar el método **get()**Se le pasa el string del nombre de un atributo, y devuelve su valor. Vemos un ejemplo en la consola de Python: 
-img_elems[2 # <img alt="How AI Works Cover" class="img-responsive" height="119" src="https://nostarch.com/sites/default/files/styles/product/public/HowAIworks_frontcover_0.png?itok=URuYzACA" title="How AI Works Cover" width="90"/> +<code python> 
- +>>> import bs4 
-img = img_elems[1] +>>> soup = bs4.BeautifulSoup(open('example.html')'html.parser') 
-str(img # '<img alt="Home" class="img-responsive" src="https://nostarch.com/sites/all/themes/nostarch/logo.png"/>' +>>> spanElem soup.select('span')[0] 
-img.get('alt' # 'Home+>>> str(spanElem) 
-img.attrs  # {'src': 'https://nostarch.com/sites/all/themes/nostarch/logo.png', 'alt': 'Home', 'class': ['img-responsive']}+'<span id="author">Al Sweigart</span>' 
 +>>> spanElem.get('id') 
 +'author
 +>>> spanElem.get('some_nonexistent_addr') == None 
 +True 
 +>>> spanElem.attrs 
 +{'id': 'author'}
 </code> </code>
 ===== Módulo selenium ===== ===== Módulo selenium =====
python/webscraping.1707155021.txt.gz · Última modificación: por alberto

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki