Evo jedan primer u C#
Code:
using System;
using System.Linq;
using System.Text;
using System.Net;
using System.Collections.Generic;
using System.Collections.Specialized;
using HtmlAgilityPack;
namespace Crawler.Library
{
public class WebCrawler
{
#region Private Methods
private string GetHTMLText(string url, NameValueCollection parameters)
{
string htmlText = string.Empty;
using (WebClient client = new WebClient())
{
Encoding encoding = Encoding.UTF8;
client.Encoding = encoding;
client.Headers.Add("user-agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5");
htmlText = encoding.GetString(client.UploadValues(url, "post", parameters));
}
return htmlText;
}
#endregion
#region Public Methods
public string GetMiddleExchangeRate(DateTime date)
{
string ret = string.Empty;
try
{
string requestedDate = date.ToString("dd.MM.yyyy");
string url = @"http://www.nbs.rs/internet/latinica/scripts/kl.html";
NameValueCollection parameters = new NameValueCollection();
parameters.Add("datum", requestedDate);
parameters.Add("eksport", "html");
parameters.Add("vrsta", "3");
ret = GetHTMLText(url, parameters);
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(ret);
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//td[@class='tablecell']");
StringBuilder sb = new StringBuilder();
foreach (HtmlNode node in nodes)
{
sb.AppendLine(node.InnerText);
}
ret = sb.ToString();
}
catch(Exception ex)
{
ret = ex.Message;
}
return ret;
}
#endregion
}
}
Potrebno je referencirati HtmlAgilityPack koji se može skinuti ovde:
http://www.codeplex.com/htmlagilitypack
Funkcija GetMiddleExchangeRate vraća string u sledećem obliku
Code:
978
Evropska unija
EUR
1
94,8637
036
Australija
AUD
1
49,4185
...
Vi je modifikujte prema svojim potrebama (da vraća neki biznis objekat, DataRow, etc)
Primer pozivanja funkcije u kodu, tako da vrati kursnu listu za 1. april 2009. god:
Code:
Crawler.Library.WebCrawler crawler = new Crawler.Library.WebCrawler();
string rates = crawler.GetMiddleExchangeRate(new DateTime(2009, 4, 1));
Happy coding!
77 77 77 2E 65 73 6E 69 70 73 2E 63 6F 6D