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.

Pregunta sobre Webscraping en Python (usando BeautifulSoup)

Estoy intentando hacer un webscrapeo de este sitio https://www.edgeprop.sg/condo-apartment/aquarius-by-the-park para obtener el Tamaño del Terreno (sqm) en la tabla de visión general. El resultado debería ser 40,608.

Sin embargo, no puedo obtener el resultado que quiero. Aquí está mi código:


<h1>[Python] prueba de webscrapeo en edgeprop</h1> import gspread import json from oauth2client.service<em>account import ServiceAccountCredentials from openpyxl.worksheet import worksheet from requests.api import request import requests import time from requests.models import Response import scrapy from bs4 import BeautifulSoup from six import add</em>metaclass, class_types query<em>string='https://www.edgeprop.sg/condo-apartment/aquarius-by-the-park'<br> resp = requests.get(query</em>string)<br> soup = BeautifulSoup(resp.content,'html.parser') print("soup is: ", query_string) try: landsize = soup.find<em>all("h4",class</em>="detail-title__text") print("Landsize is: ", landsize) except IndexError: pass
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Hay algunos problemas con el código proporcionado. Aquí hay una versión revisada:

    import requests
    from bs4 import BeautifulSoup
    
    url = "https://www.edgeprop.sg/condo-apartment/aquarius-by-the-park"
    resp = requests.get(url)
    soup = BeautifulSoup(resp.content, 'html.parser')
    
    try:
        landsize = soup.select_one('div.overview-table td:contains("Land Size (sqm)") + td').text
        print("El tamaño del terreno es:", landsize)
    except AttributeError:
        print("No se pudo encontrar el tamaño del terreno.")
    

    Esto es lo que se cambió:

    • Se corrigió la cadena URL
    • Se eliminaron las importaciones innecesarias
    • Se utilizó el método select_one() para encontrar la celda específica de la tabla que contiene la información del tamaño del terreno
    • Se utilizó el selector CSS :contains() para apuntar a la celda de tabla correcta
    • Se agregó manejo de errores en caso de que no se encuentre la información del tamaño del terreno

    Esto debería producir la salida:

    El tamaño del terreno es: 40,608
    

    ¡Espero que esto ayude!

Comments are closed.