2012-07-10 42 views
0

我有一個網站的HTML代碼:如何<a alt="url解析URL attribute"">

<a alt="Кроссовки adidas. Цвет черный. Категории: Женская обувь, Лучшие отзывы, Кеды, кроссовки, ботинки. Вид 3." 
class="enabledZoom MagicThumb-swap" href="http://img2.site.ru/big/120000/129102-3.jpg" rel="zoom-id:Azoom;zoom-width:450;zoom-height:598;zoom-distance:10;zoom-position:right;opacity:50;" 
rev="http://img2.site.ru/large/120000/129102-3.jpg" style="outline: 0px; " id="mt-1334303054133"> 
<img src="http://img2.site.ru/tm/120000/129102-3.jpg" class=""></a> 

如何提取「http://img2.site.ru/ ?/120000/129102-3.jpg」與引入nokogiri寶石

PS引入nokogiri是解析元素:

[#<Nokogiri::XML::Element:0x42c1ad8 name="a" attributes=[#<Nokogiri::XML::Attr:0x42c1a7e name="alt" value="Кроссовки adidas. Цвет черный. Категории: Женская обувь, Лучшие отзывы, Кеды, кроссовки, ботинки. Вид 1.">, #<Nokogiri::XML::Attr:0x42c1a74 name="class" value="enabledZoom">, #<Nokogiri::XML::Attr:0x42c1a6a name="href" value="http://img2.site.ru/big/120000/129102-1.jpg">, #<Nokogiri::XML::Attr:0x42c1a60 name="rel" value="zoom-id:Azoom;zoom-width:450;zoom-height:598;zoom-distance:10;zoom-position:right;opacity:50;">, #<Nokogiri::XML::Attr:0x42c1a4c name="rev" value="http://img2.site.ru/large/120000/129102-1.jpg">] children=[#<Nokogiri::XML::Element:0x42c0ee4 name="img" attributes=[#<Nokogiri::XML::Attr:0x42c0e94 name="src" value="http://img2.site.ru/tm/120000/129102-1.jpg">, #<Nokogiri::XML::Attr:0x42c0e8a name="class" value="current">]>]>] 
+1

found_elements.first ['rev'] ?? – 2012-07-10 15:20:11

+0

@Dmitry根據你的nokogiri反應是正確的。然而,你的解析將更加強大,如果你更精確地確定元素,你就不需要'第一',正如@ TheTinMan向你展示的那樣。如果您提供Nokogiri搜索代碼和更大的HTML樣本,我們可以爲您提供更多幫助。 – 2012-07-11 16:56:06

回答

1

可以使用at方法,如果你知道你想要的<img>標籤是在T他首先<a>標籤:

doc.at('a img')['src'] => "http://img2.site.ru/tm/120000/129102-3.jpg" 

如果不是的話,那麼你就需要隔離<a><img>。我的<a id="...">後,使用類似大概走:

doc.at('a#mt-1334303054133 img')['src'] => "http://img2.site.ru/tm/120000/129102-3.jpg" 

如果有多個<a><img>標籤那麼你的樣本不夠好,我們就需要對您收到的HTML的更多信息。