【问题标题】:Parsing with Nokogiri用 Nokogiri 解析
【发布时间】:2013-07-13 20:51:04
【问题描述】:

我正在使用 Nokogiri 解析 HTML,然后获取这些类型元素。

<li data-item="{"title":"where is title","slug":"about some",
    "has_many_images":false,"show_image":"abbxb","created_at":1373737401,
    "show_attr":{"value":"150"},
    "location":"Alabama",
    "category":"Table",
    "is_business":false}">

    //here other many more
</li>

现在我想得到这个data-item,我正在使用:

 page.css("li[data-item]")[0]

我得到了这样的东西:

#&lt;Nokogiri::XML::Element:0x14fc250 name="li" attributes=[#&lt;Nokogiri::XML::Attr:0x14fc178 name="class" value="item"&gt;, 等等...

但我想要这样:

"{"title":"where is title","slug":"about some",
        "has_many_images":false,"show_image":"abbxb","created_at":1373737401,
        "show_attr":{"value":"150"},
        "location":"Alabama",
        "category":"Table",
        "is_business":false}"

有什么建议吗?

【问题讨论】:

  • @nano.galvao 不错的编辑.. 我今天从你那里学到了.. :)

标签: ruby nokogiri


【解决方案1】:

您可以通过以下选择获得该属性:

page.at_xpath("//li[1]/@data-item").content

编辑

更完整的演示,应@Priti 的要求:

body = %Q{     
  <body>
    <li data-item='{"title":"where is title","slug":"about some",
      "has_many_images":false,"show_image":"abbxb","created_at":1373737401,
      "show_attr":{"value":"150"},
      "location":"Alabama",
      "category":"Table",
      "is_business":false}'>
    </li>
  </body>
}
page = Nokogiri::XML(body)
result = page.at_xpath("//li[1]/@data-item").content
# "{\"title\":\"where is title\",\"slug\":\"about some\",         \"has_many_images\":false,\"show_image\":\"abbxb\",\"created_at\":1373737401,         \"show_attr\":{\"value\":\"150\"},         \"location\":\"Alabama\",         \"category\":\"Table\",         \"is_business\":false}"

【讨论】:

  • 提问者描述的data-item属性值无效。我认为他或她正确地逃避了引号。例如,如果你用单引号将属性值括起来,我的选择器就可以工作。
  • 我试过但只得到""。 " :) 我希望你有时间也试试。
  • 我刚刚尝试了提问者的示例,只是将data-item=' ... ' 替换为data-item=" ... "。有了这个选择器,我就可以得到提问者正在寻找的东西。
  • @Priti:是的,我得到了绝对的,我正在寻找的东西。 :)
  • @kardeiz 你能发布你的代码吗?然后我也可以发布我的答案。但是我出了点问题。可能如果我看到你的,我会抓住我的虚假部分。你愿意分享吗?
猜你喜欢
  • 1970-01-01
  • 2014-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-21
  • 2012-07-05
  • 1970-01-01
相关资源
最近更新 更多