es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

no se desea la salida en el raspado web en bs4

Estoy scrapeando información de un producto. Pero cuando scrapeo el precio no me da la salida adecuada. No hay ningún error pero no obtengo la salida deseada.

Y además, produce un error al encontrar la categoría de un producto.
Aquí está mi código.

import requests
from bs4 import BeautifulSoup as bs
import pandas

url='https://shop.eziline.com/product/uncategorized/umrah-management-system/'
r=requests.get(url)
soup=bs(r.content,'html.parser')

name=soup.find(class_='product_title entry-title').text.strip()
print(name)
price=soup.find('span',class_='woocommerce-Price-amount amount').text.strip()
print(price)
detail=soup.find(class_='woo-product-details_short-description').text.strip()
print(detail)
category=soup.find('cats-link a').text.strip()
print(category)
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Podría haber varias razones por las que no obtiene la salida deseada para el precio o la categoría del producto que está extrayendo:

    1. Problema de precio: Es posible que el código HTML para el precio no sea consistente y por lo tanto, el objeto “soup” no pueda encontrar la etiqueta correcta para el precio. Asegúrese de que el código HTML para el precio sea consistente en todos los productos que está extrayendo.
    2. Problema de categoría: Parece que está tratando de encontrar la categoría del producto buscando una etiqueta con la clase “cats-link a”. Esta podría ser una etiqueta no válida y por eso está enfrentando un error. Asegúrese de utilizar la etiqueta correcta para encontrar la categoría del producto.

    Para solucionar estos problemas, podría intentar lo siguiente:

    1. Solución para el precio: En lugar de buscar la etiqueta con la clase “woocommerce-Price-amount amount”, intente buscar la etiqueta padre y luego obtener el texto de la etiqueta hija dentro de ella. Por ejemplo, puede encontrar la etiqueta padre usando “.find(class_=’price’)” y luego obtener el texto de la etiqueta hija (que tiene el precio) usando “.find(‘span’).text”.
  2. Solución para la categoría: Revise el código HTML para la categoría del producto y encuentre la etiqueta correcta para extraer el nombre de la categoría. También podría intentar buscar la etiqueta utilizando una combinación de una clase y un atributo, como “.find(‘a’, {‘rel’: ‘category tag’})”. Esto buscará una etiqueta con un atributo “a” y un valor “rel” de “category tag”.

  3. Aquí tiene un código actualizado que debería funcionar:

    import requests
    from bs4 import BeautifulSoup as bs
    import pandas
    
    url='https://shop.eziline.com/product/uncategorized/umrah-management-system/'
    r=requests.get(url)
    soup=bs(r.content,'html.parser')
    
    name=soup.find(class_='product_title entry-title').text.strip()
    print(name)
    
    price_parent = soup.find(class_='price')
    price = price_parent.find('span').text.strip()
    print(price)
    
    detail=soup.find(class_='woo-product-details_short-description').text.strip()
    print(detail)
    
    category = soup.find('a', {'rel': 'category tag'}).text.strip()
    print(category)
    

Comments are closed.