【问题标题】:How to parse url in <a alt="url attribute"">如何在 <a alt="url 属性""> 中解析 url
【发布时间】:2012-07-10 13:10:51
【问题描述】:

我在一个网站上有 html 代码:

<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>

如何用 nokogiri gem 提取“http://img2.site.ru/large/120000/129102-3.jpg”?

附: 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">]>]>]

【问题讨论】:

  • found_elements.first['rev'] ??
  • 鉴于您的 nokogiri 响应,@Dmitry 是正确的。但是,您的解析将更加健壮,如果您更准确地识别元素,您将不需要first,正如@theTinMan 向您展示的那样。如果您提供 Nokogiri 搜索代码和更大的 HTML 示例,我们可以为您提供更多帮助。

标签: ruby html-parsing nokogiri


【解决方案1】:

如果你知道你想要的&lt;img&gt;标签在第一个&lt;a&gt;标签中,你可以使用at方法:

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

如果不是,那么您需要隔离 &lt;a&gt;&lt;img&gt;。我可能会使用类似的东西去&lt;a id="..."&gt;

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

如果有多个 &lt;a&gt;&lt;img&gt; 标签,则说明您的示例不够好,我们需要有关您收到的 HTML 的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    相关资源
    最近更新 更多