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.

¿Cómo obtener el href de un elemento de la clase hermana de búsqueda?

Me gustaría obtener el href del siguiente html:

<a class="AirQuality--detailsButton--DBdLS Button--primary--1UQTP" href="/en-IN/forecast/air-quality/l/bf01d09009561812f3f95abece23d16e123d8c08fd0b8ec7ffc9215c0154913c" target="_self">Ver detalles</a>

donde el href se extrae en función de la clase class="AirQuality--detailsButton--DBdLS Button--primary--1UQTP" del elemento a.

He intentado lo siguiente pero no devuelve nada.

response.css('a.AirQuality--detailsButton--DBdLS Button--primary--1UQTP::attr(href)').get()

El html completo se puede obtener a través de scrapy con el siguiente comando:

scrapy shell "https://weather.com/en-IN/weather/today/l/bf01d09009561812f3f95abece23d16e123d8c08fd0b8ec7ffc9215c0154913c"

Cualquier ayuda sería muy apreciada, gracias de antemano 🙂

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para extraer el href basándose en el nombre de la clase dada, se puede utilizar el selector de CSS de la siguiente manera:

    response.css('a.AirQuality--detailsButton--DBdLS::attr(href)').get()
    

    Esto extraerá el valor del atributo href del elemento a que tiene el nombre de clase AirQuality--detailsButton--DBdLS. Ten en cuenta que no es necesario incluir la clase Button--primary--1UQTP en el selector de CSS ya que no es necesario para identificar de manera única el elemento que se desea extraer.

    También ten en cuenta que los caracteres " en el HTML de entrada son entidades HTML que representan un carácter de comillas dobles ("), por lo que no es necesario escaparlos en el selector de CSS.

    Juntando todo, aquí hay un ejemplo de cómo se puede extraer el valor del atributo href utilizando Scrapy:

    import scrapy
    
    class MySpider(scrapy.Spider):
        name = 'myspider'
        start_urls = ['https://weather.com/en-IN/weather/today/l/bf01d09009561812f3f95abece23d16e123d8c08fd0b8ec7ffc9215c0154913c']
    
        def parse(self, response):
            href = response.css('a.AirQuality--detailsButton--DBdLS::attr(href)').get()
            print(href)
    

    Esto imprimirá el valor del atributo href en la consola.

Comments are closed.