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

    Ngay bây giờ tôi nắm lấy thành công các yếu tố đầy đủ từ một trang HTML với điều này:XPath để phân tích cú pháp "SRC" từ thẻ IMG?

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

    ví dụ nó sẽ quay trở lại này:

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

    Nhưng tôi chỉ cần url SRC (http://example.com/img.jpg). Bất kỳ giúp đỡ?

    Trả lời

    53

    Bạn rất gần với việc tự trả lời câu hỏi này rằng tôi hơi miễn cưỡng trả lời nó cho bạn. Tuy nhiên, XPath sau đây sẽ cung cấp những gì bạn muốn (miễn là mã nguồn là XHTML, tất nhiên).

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

    Để biết thêm mẹo, hãy xem W3 Schools. Họ có hướng dẫn tuyệt vời về những điều như vậy và một tài liệu tham khảo tuyệt vời quá.

    9

    Sử dụng Hpricot công trình này:

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

    Trong trường hợp bạn có nhiều hơn một hình ảnh, sau đây đưa ra một mảng:

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

    Tuy nhiên, Nokogirimany times faster và nó “can be used as a drop in replacement” cho Hpricot.
    Đây là phiên bản dành cho Nokogiri, trong đó XPath này để lựa chọn các thuộc tính hoạt động:

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

    hoặc nhiều hình ảnh:

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

    Loạng choạng khi câu hỏi này, tôi không thể không tự hỏi: điều gì khiến bạn trả lời tham khảo ruby ​​depencies liên quan? Có vẻ ngoài màu xanh với tôi. –

    +0

    @FabianPas Tôi tự hỏi bản thân mình: D –

    +0

    Haha, đã lâu rồi nhỉ? : p –

    0

    // img/@ src

    bạn chỉ có thể đi với điều này nếu bạn muốn có một liên kết của hình ảnh.

    dụ:

    <img alt="" class="avatar width-full rounded-2" height="230" src="https://avatars3.githubusercontent.com/...;s=460" width="230"> 
    
    Các vấn đề liên quan