Yahoo! search interface: Difference between revisions
Content added Content deleted
(New page: {{task|Programming environment operations}}Category:Networking and Web Interaction Create a class for searching Google results. It must implement a '''Next Page''' method, and read UR...) |
(added c#) |
||
Line 3: | Line 3: | ||
Create a class for searching Google results. |
Create a class for searching Google results. |
||
It must implement a '''Next Page''' method, and read URL, Title and Content from results. |
It must implement a '''Next Page''' method, and read URL, Title and Content from results. |
||
=={{header|C sharp|C#}}== |
|||
<lang csharp>using System; |
|||
using System.Net; |
|||
using System.Text; |
|||
using System.Text.RegularExpressions; |
|||
using System.Collections; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
class GoogleSearch { |
|||
private string query; |
|||
private string content; |
|||
private int page = 1; |
|||
public GoogleSearch(string query) { |
|||
this.query = query; |
|||
this.content = new WebClient().DownloadString("http://www.google.com/search?q=" + query); |
|||
} |
|||
public GoogleSearch(string query, int page) { |
|||
this.query = query; |
|||
this.page = page; |
|||
this.content = new WebClient().DownloadString(String.Format("http://www.google.com/search?q={0}&start={1}", query, (this.page - 1) * 10)); |
|||
} |
|||
public int Page { |
|||
get { |
|||
return this.page; |
|||
} |
|||
} |
|||
public int Length { |
|||
get { |
|||
return Int32.Parse(new Regex("Results <b>\\d+?</b> - <b>\\d+?</b> of about <b>(.+?)</b>"). |
|||
Match(this.content).Groups[1].Value.Replace(",", "")); |
|||
} |
|||
} |
|||
public GoogleResult[] Results { |
|||
get { |
|||
ArrayList results = new ArrayList(); |
|||
foreach (Match e in new Regex("<li class=g><h3 class=r><a href=\"(.+?)\".+?>(.+?)</a></h3><div class=\"s\">(.+?)<cite>").Matches(this.content)) { |
|||
string rurl = e.Groups[1].Value; |
|||
string rtitle = e.Groups[2].Value. |
|||
Replace("<em>", "").Replace("</em>", "").Replace(" <b>...</b>",""); |
|||
string rcontent = e.Groups[3].Value. |
|||
Replace("<em>", "").Replace("</em>", "").Replace(" <b>...</b>", ""); |
|||
Console.WriteLine(rurl); |
|||
results.Add(new GoogleResult(rurl, rtitle, rcontent)); |
|||
} |
|||
return (GoogleResult[])results.ToArray(typeof(GoogleResult)); |
|||
} |
|||
} |
|||
public GoogleSearch NextPage() { |
|||
return new GoogleSearch(this.query, this.page + 1); |
|||
} |
|||
public GoogleSearch GetPage(int page) { |
|||
return new GoogleSearch(this.query, page); |
|||
} |
|||
} |
|||
class GoogleResult { |
|||
public string URL { get; set; } |
|||
public string Title { get; set; } |
|||
public string Content { get; set; } |
|||
public GoogleResult(string url, string title, string content) { |
|||
this.URL = url; |
|||
this.Title = title; |
|||
this.Content = content; |
|||
} |
|||
}</lang> |
Revision as of 02:31, 3 May 2009
Yahoo! search interface
You are encouraged to solve this task according to the task description, using any language you may know.
You are encouraged to solve this task according to the task description, using any language you may know.
Create a class for searching Google results. It must implement a Next Page method, and read URL, Title and Content from results.
C#
<lang csharp>using System; using System.Net; using System.Text; using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Linq;
class GoogleSearch {
private string query; private string content; private int page = 1;
public GoogleSearch(string query) { this.query = query; this.content = new WebClient().DownloadString("http://www.google.com/search?q=" + query); }
public GoogleSearch(string query, int page) { this.query = query; this.page = page; this.content = new WebClient().DownloadString(String.Format("http://www.google.com/search?q={0}&start={1}", query, (this.page - 1) * 10)); }
public int Page { get { return this.page; } }
public int Length { get { return Int32.Parse(new Regex("Results \\d+? - \\d+? of about (.+?)"). Match(this.content).Groups[1].Value.Replace(",", "")); } }
public GoogleResult[] Results { get { ArrayList results = new ArrayList();
foreach (Match e in new Regex("
<a href=\"(.+?)\".+?>(.+?)</a>
(.+?)").Matches(this.content)) {
string rurl = e.Groups[1].Value;
string rtitle = e.Groups[2].Value. Replace("", "").Replace("", "").Replace(" ...",""); string rcontent = e.Groups[3].Value. Replace("", "").Replace("", "").Replace(" ...", "");
Console.WriteLine(rurl); results.Add(new GoogleResult(rurl, rtitle, rcontent)); } return (GoogleResult[])results.ToArray(typeof(GoogleResult)); } }
public GoogleSearch NextPage() { return new GoogleSearch(this.query, this.page + 1); }
public GoogleSearch GetPage(int page) { return new GoogleSearch(this.query, page); }
}
class GoogleResult {
public string URL { get; set; } public string Title { get; set; } public string Content { get; set; }
public GoogleResult(string url, string title, string content) { this.URL = url; this.Title = title; this.Content = content; }
}</lang>