Continuing in the series of Brazilian bikini Web development tutorials, here is an experiment with the Yahoo Search API, Ruby and Brazilian bikinis.
The script uses Ruby to convert the XML from the Yahoo Image Search API into XHTML Strict as shown in the image below:

Please download the attached Ruby file to follow along.
Pick up a copy of Hpricot if you don't already have it. If you have gems you should be able to do sudo gem install hpricot.
require 'rubygems'
require 'hpricot'
require 'net/http'The first part defines a function called show_bikinis and reads the XML passed to it into Hpricot. The function is called at the bottom of the script, so if it doesn't make sense at first read through it all the way:
def show_bikinis(xml)
# Parse the XML in the file
doc = Hpricot.XML(xml)Then begin creating the output string that will be written to an HTML file:
# Begin the output file
output = '<html><head>Ruby Bikini</head>
<body><h1>Ruby Bikini</h1>'(The HTML in the attached file is a little different, but this snippet is enough for the tutorial.)
Next, use Hpricot to extract the text from the XML elements created by the Yahoo Search API. The elements that we want to extract from the Yahoo Image Search API XML are <result>, <title>, <url>, <summary>, <thumbnail> and the <url> that is the child of <thumbnail>. For each <result>, extract the text of the desired elements:
(doc/:result).each do |el|
title = (el/:title).text
url = el.at(:url).inner_html
summary = (el/:summary).text
thumbnail = (el/:thumbnail).text
thumbnail_url = (el/:thumbnail/:url).textThen insert the elements into some HTML that is appended to the output variable that will be written to a file later. Double quotes are used for the alt text because the <summary> sometimes contains single quotes.
output += "<a href='#{url}'><img src='#{thumbnail_url}' alt=\"#{summary}\" /></a>"
endAfter the script finishes looping through the XML results, add the closing HTML to the output variable, write the file, and end the show_bikinis function:
output += "</body></html>"
# write it to a file
outfile = File.new("ruby_bikini.html", "w")
outfile.puts output
outfile.close
end
Now to the Yahoo API section — you need to enter your own Yahoo API key which you can get for free at the Yahoo Developer site.
The following code builds a POST request to Yahoo Images to fetch 50 results for brazilian bikinis:
url = URI.parse('http://search.yahooapis.com/ImageSearchService/V1/imageSearch')
appid = 'your-API-key-goes-here' # use your Yahoo API key here
query = 'brazilian bikinis'
results = 50Add the post arguments:
post_args = {
'appid'=> appid,
'results' => results,
'query' => query
}Fetch the Brazilian bikini photos from Yahoo Images, making an attempt to catch errors:
begin
resp, data = Net::HTTP.post_form(url, post_args)
rescue
print "Connection error."
endTo build your Brazilian bikini photo gallery, feed the Yahoo XML results into the show_bikinis function that was defined at the beginning of the script:
# Run script
show_bikinis(data)The final result should be an HTML bikini photo gallery called ruby_bikini.html.

| Attachment | Size |
|---|---|
| rubybikini.rb | 1.41 KB |
Did you find this post helpful? Leave a comment below, and subscribe to my RSS feed.
Comments
http://code.whytheluckystiff.net
http://code.whytheluckystiff.net/hpricot/wiki/HpricotXML
Hpricot XML
Thanks for that — I updated the script.
Yahoo Image Search API XML
Yahoo Image Search API XML are result>, title>, url>, summary>, thumbnail> and the url> ... not anymore just capp the first letters in the (doc/:result).each do |el| section ...
Cheers!