【问题标题】:Issue in parsing nokogiri element解析 nokogiri 元素时的问题
【发布时间】:2011-09-14 01:52:54
【问题描述】:

我正在使用 Mechanize gem 来解析 html 内容。

在终端上触发,

 agent.get("http://www.example.com/").search(".sidebar-deal-excerpt").first

给我这个:

 <Nokogiri::XML::Element:0x3fcdb3add700 name="div" attributes=[#<Nokogiri::XML::Attr:0x3fcdb3add570 name="class" value="sidebar-deal-excerpt">] children=[#<Nokogiri::XML::Text:0x3fcdb3add0ac "\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t">, #<Nokogiri::XML::Element:0x3fcdb3adcfd0 name="a" attributes=[#<Nokogiri::XML::Attr:0x3fcdb3adcf6c name="href" value="http://www.example.com/getaway-8774-yatra-september-deal">] children=[#<Nokogiri::XML::Text:0x3fcdb3adcaa8 " ">, #<Nokogiri::XML::Element:0x3fcdb3adc9cc name="span" attributes=[#<Nokogiri::XML::Attr:0x3fcdb3adc968 name="style" value="color: #000">] children=[#<Nokogiri::XML::Text:0x3fcdb3dd6b50 " international holiday package bookings at Yatra.com ">]>, #<Nokogiri::XML::Text:0x3fcdb3dd5f5c " ">]>, #<Nokogiri::XML::Text:0x3fcdb3dd5a98 "\r\n\t\t\t\t\t\t\t\t\t\t\t\t">]> 

在终端上触发

agent.get("http://www.example.com/").search(".sidebar-deal-excerpt").first.children

给我这个:

 <Nokogiri::XML::Text:0x3fcdb399c3dc "\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t">, #<Nokogiri::XML::Element:0x3fcdb399c300 name="a" attributes=[#<Nokogiri::XML::Attr:0x3fcdb399c29c name="href" value="http://www.example.com/getaway-8774-yatra-september-deal">] children=[#<Nokogiri::XML::Text:0x3fcdb399bdd8 " ">, #<Nokogiri::XML::Element:0x3fcdb399bcfc name="span" attributes=[#<Nokogiri::XML::Attr:0x3fcdb399bc98 name="style" value="color: #000">] children=[#<Nokogiri::XML::Text:0x3fcdb399b7d4 "international holiday package bookings at Yatra.com ">]>, #<Nokogiri::XML::Text:0x3fcdb3dd8770 " ">]>, #<Nokogiri::XML::Text:0x3fcdb3dd6df8 "\r\n\t\t\t\t\t\t\t\t\t\t\t\t">]

问题是,我想从中获取 url。我想得到这个属性值

value="http://www.example.com/getaway-8774-yatra-september-deal"

   http://www.example.com/getaway-8774-yatra-september-deal

我该如何解析这个?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 nokogiri mechanize


    【解决方案1】:

    怎么样:(未经测试)

    agent = Mechanize.new
    page = agent.get("http://www.snapdeal.com/")
    page = agent.get("http://www.snapdeal.com/") # yeah, you've got to call it twice for this site
    urls = page.search(".sidebar-deal-excerpt a").collect{|a| a.attributes["href"].value }
    

    【讨论】:

    • 不,它不起作用..这是我要解析的网站。 snapdeal.com 的侧边栏
    • 见上面的代码。要获取值,您必须使用 a.attributes["href"].value
    • 不,我认为第一个请求设置了一个 cookie。我第一次访问该网站时,我得到了一个下拉菜单。第二次,cookie 被发送过来,站点的响应不同。
    • 你能帮我解决这个问题吗stackoverflow.com/questions/7422799/…
    猜你喜欢
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多