[#406419] Recursion with Hash — Love U Ruby <lists@...>

h = {a: {b: {c: 23}}}

14 messages 2013/04/01

[#406465] Exclusively for Rubyists, a community on Facebook — "senthil k." <lists@...>

I was surprised to know that there is no community for Ruby Programming

12 messages 2013/04/03
[#406467] Re: Exclusively for Rubyists, a community on Facebook — Marc Heiler <lists@...> 2013/04/04

Thing is, some people do not use Facebook and never will.

[#406528] Role of bundler in creating and installing a gem — Jon Cairns <lists@...>

Hi fellow rubyists,

11 messages 2013/04/05

[#406555] How do you know what the main file in Ruby Projects is? — peteV <pete0verse@...>

Hi Ruby people,

18 messages 2013/04/05
[#406558] Re: How do you know what the main file in Ruby Projects is? — "Carlo E. Prelz" <fluido@...> 2013/04/05

Subject: How do you know what the main file in Ruby Projects is?

[#406560] Re: How do you know what the main file in Ruby Projects is? — Hans Mackowiak <lists@...> 2013/04/05

Carlo E. Prelz wrote in post #1104616:

[#406562] Re: How do you know what the main file in Ruby Projects is? — "D. Deryl Downey" <me@...> 2013/04/05

Actually its not wrong. What it does is explicitly state which ruby

[#406563] Re: How do you know what the main file in Ruby Projects is? — Matt Lawrence <matt@...> 2013/04/05

On Sat, 6 Apr 2013, D. Deryl Downey wrote:

[#406564] Re: How do you know what the main file in Ruby Projects is? — Hans Mackowiak <lists@...> 2013/04/05

Matt Lawrence wrote in post #1104625:

[#406566] Re: How do you know what the main file in Ruby Projects is? — Matt Lawrence <matt@...> 2013/04/05

On Sat, 6 Apr 2013, Hans Mackowiak wrote:

[#406570] Re: How do you know what the main file in Ruby Projects is? — Matthew Mongeau <halogenandtoast@...> 2013/04/05

I'm interested in the issue with using env, but I find you explanation a but=

[#406600] Mapping string data ptr to buffer in ffi — se gm <lists@...>

I'm trying to implement some "shared memory" in Ruby, but I'm not sure

20 messages 2013/04/08

[#406683] confusion with Struct class — Love U Ruby <lists@...>

I went to there - http://www.ruby-doc.org/core-2.0/Struct.html but the

29 messages 2013/04/11
[#406694] Re: confusion with Struct class — Love U Ruby <lists@...> 2013/04/11

Why does every time the has value getting changed,while the instance

[#406762] Why does #content method in nokogiri not printing the full text? — Love U Ruby <lists@...>

Here is the documentation: http://www.rubydoc.info/gems/nokogiri/frames

19 messages 2013/04/14
[#406764] Re: Why does #content method in nokogiri not printing the full text? — tamouse mailing lists <tamouse.lists@...> 2013/04/14

On Sun, Apr 14, 2013 at 11:19 AM, Love U Ruby <lists@ruby-forum.com> wrote:

[#406874] Input: sentence Modify: words Output: modified sentence — Philip Parker <lists@...>

I am new to Ruby. This is a programming interview question to use any

11 messages 2013/04/19

[#406912] Tap method : good or bad practice ? — Sébastien Durand <lists@...>

Hi all !

18 messages 2013/04/21

[#406936] BEGINNER -CLASS QUERY — shaik farooq <lists@...>

HEY as we know that the object conatins the instance variables that are

22 messages 2013/04/22

[#406966] copying files syntax with FileUtils.rb (grr.) — Thomas Luedeke <lists@...>

In my Ruby scripting, there is probably no greater and chronic source of

10 messages 2013/04/23

[#406969] what is the $- magic global? — Matthew Kerwin <lists@...>

I've been searching for the past hour or so, including manually stepping

13 messages 2013/04/24

[#407059] New Rexx like data structure — Peter Hickman <peterhickman386@...>

This is just something that I have been playing with for some time but I

11 messages 2013/04/29

[#407070] writing lines to a file — peteV <pete0verse@...>

I have a text file with on every line a magic card number and such info

13 messages 2013/04/29

Re: nested loop for xpath

From: Robert Klemme <shortcutter@...>
Date: 2013-04-05 07:08:58 UTC
List: ruby-talk #406512
On Fri, Apr 5, 2013 at 7:57 AM, Soichi Ishida <lists@ruby-forum.com> wrote:

> Rails 1.9.3
>
> I am scraping a web page,
> http://en.wikipedia.org/wiki/List_of_birds_by_common_name
>
> using Nokogiri and Xpath
>
> I want all the names of the birds listed there.
>
> xpath1 = '//div[@id='bodyContent']/div[@id='mw-content-text']/ul[1]'
>

That does not work.  You need to escape single quotes or use double quotes.


> should get a group of birds
>
> Great Tinamou
> Andean Tinamou
> Elegant Crested Tinamou
> Little Tinamou
> Slaty-breasted Tinamou
> Thicket Tinamou
>
> I need to get each one of these names and tried nested loop
>
> xpath1 = '//div[@id='bodyContent']/div[@id='mw-content-text']/ul'
> doc = Nokogiri::HTML(open(url))
> categories = doc.xpath(xpath1)
>
> categories.each do | c |
>     c.xpath('/li').each do | n |
>          p n.text
>     end
> end
>
>
> gives empty values.
> Can anyone tell why?


Yes, your XPath in the nested loop searches a <li> at _the top of the
document_ because you prefix with "/".  You would need


>  or are there better ways?
>
>
Yes.  Having a loop here does not really make sense since that can be
solved by the XPath.

irb(main):009:0> puts
dom.xpath('//div[@id="bodyContent"]/div[@id="mw-content-text"]/ul[1]//a/text()').map(&:to_s)
Great Tinamou
Andean Tinamou
Elegant Crested Tinamou
Little Tinamou
Slaty-breasted Tinamou
Thicket Tinamou

Note, why #to_s is necessary to get String instances:

irb(main):012:0>
dom.xpath('//div[@id="bodyContent"]/div[@id="mw-content-text"]/ul[1]//a/text()').each
{|n| p n}
#<Nokogiri::XML::Text:0x..fc02b6340 "Great Tinamou">
#<Nokogiri::XML::Text:0x..fc02b469e "Andean Tinamou">
#<Nokogiri::XML::Text:0x..fc02b3d48 "Elegant Crested Tinamou">
#<Nokogiri::XML::Text:0x..fc02b33f2 "Little Tinamou">
#<Nokogiri::XML::Text:0x..fc02b1822 "Slaty-breasted Tinamou">
#<Nokogiri::XML::Text:0x..fc02b1016 "Thicket Tinamou">
=> 0

Btw, you can also use a more explicit XPath:
'//div[@id="bodyContent"]/div[@id="mw-content-text"]/ul[1]/li/a/text()'

(replaced "//" with "/li/")

Kind regards

robert

-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

In This Thread