html
  • parsing
  • xpath
  • screen-scraping
  • 2009-07-24 180 views 22 likes 
    22

    En este momento me agarró con éxito el elemento completo desde una página HTML con esto:XPath para analizar "SRC" de la etiqueta IMG?

    //img[@class='photo-large'] 
    

    por ejemplo, podría devolver este:

    <img src="http://example.com/img.jpg" class='photo-large' /> 
    

    Pero sólo necesita la URL SRC (http://example.com/img.jpg). ¿Alguna ayuda?

    Respuesta

    53

    Estás tan cerca de responder a esto tú mismo que soy un poco reacio a responderlo por ti. Sin embargo, el siguiente XPath debe proporcionar lo que desee (siempre que la fuente sea XHTML, por supuesto).

    //img[@class='photo-large']/@src 
    

    Para más consejos, echa un vistazo a W3 Schools. Tienen excelentes tutoriales sobre tales cosas y una gran referencia también.

    9

    Usando hpricot esto funciona:

    doc.at('//img[@class="photo-large"]')['src'] 
    

    En caso de que tenga más de una imagen, el siguiente da una matriz:

    doc.search('//img[@class="photo-large"]').map do |e| e['src'] end 
    

    Sin embargo, Nokogiri es many times faster y “can be used as a drop in replacement” para Hpricot.
    Aquí la versión para Nokogiri, en la que este XPath para seleccionar los atributos funciona:

    doc.at('//img[@class="photo-large"]/@src').to_s 
    

    o por muchas imágenes:

    doc.search('//img[@class="photo-large"]/@src').to_a 
    
    +2

    tropezar con esta pregunta, no puedo evitar preguntarme: ¿qué te hace referencia a contestar depencies relacionados rubí? Me parece bastante inesperado. –

    +0

    @FabianPas Me pregunto lo mismo: D –

    +0

    Jaja, ha pasado un tiempo, ¿verdad? :pag –

    0

    // img/@ src

    que sólo puede ir con esto si quieres un enlace de la imagen.

    ejemplo:

    <img alt="" class="avatar width-full rounded-2" height="230" src="https://avatars3.githubusercontent.com/...;s=460" width="230"> 
    
    Cuestiones relacionadas