1

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]

私はこのようなものを得ています:

#<Nokogiri::XML::Element:0x14fc250 name="li" attributes=[#<Nokogiri::XML::Attr:0x14fc178 name="class" value="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}"

なにか提案を?

4

1 に答える 1

2

次の選択でその属性を取得できます。

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}"
于 2013-07-13T21:10:45.330 に答える