Как узнать PR и беки в win32 приложении?

AF
На сайте с 06.12.2006
Offline
26
363

Пишку програмку на VB NET для анализа статистики.

Может кто делал что то подобное - и знает как получать PR беки итд?

Я так понимаю все можно получить просто парся страничку - но может есть службы -или сервисы которые отдают эту инфу в нормальном ( хмл) формате??

В общем если кто может помочь советом - заранее спасибо.

igor456
На сайте с 10.10.2005
Offline
104
#1

класс для определения PR на C#

сори, ссылку где брал не помню, по-этому даю то, что нашел на локалке...

public class GooglePageRankGetter

{

private readonly uint _googleMagic = 0xE6359A60;

public GooglePageRankGetter()

{

}

public int GetPageRank(string url)

{

if (url.ToLower().StartsWith("http://") == false)

url = "http://" + url;

url = "info:" + url;

uint checksum = GetChecksum(url);

string googleUrl = "http://www.google.com/search?client=navclient-auto&ch=6" +

checksum + "&features=Rank&q=" + url;

string pageText = GetResponseText(googleUrl);

string pageRankString = "0";

Regex re = new Regex(":(?<1>\\d+)\\n", RegexOptions.Singleline | RegexOptions.IgnoreCase);

Match m = re.Match(pageText);

if (m.Success) pageRankString = m.Groups[1].ToString();

int pageRank = int.Parse(pageRankString);

return pageRank;

}

private uint GetChecksum(string url)

{

long a = 0x9E3779B9;

long b = a;

long c = _googleMagic;

int k = 0;

int len = url.Length;

while (len >= 12)

{

a += ((int) url[k + 0] + ((int) url[k + 1] << 8) + ((int) url[k + 2] << 16) + ((int) url[k + 3] << 24));

b += ((int) url[k + 4] + ((int) url[k + 5] << 8) + ((int) url[k + 6] << 16) + ((int) url[k + 7] << 24));

c += ((int) url[k + 8] + ((int) url[k + 9] << 8) + ((int) url[k + 10] << 16) + ((int) url[k + 11] << 24));

List<long> mix = Mix(a, b, c);

a = mix[0];

b = mix[1];

c = mix[2];

k += 12;

len -= 12;

}

c += url.Length;

switch (len)

{

case 11: c += ((int) url[k + 10] << 24); goto case 10;

case 10: c += ((int) url[k + 9] << 16); goto case 9;

case 9: c += ((int) url[k + 8] << 8); goto case 8;

case 8: b += ((int) url[k + 7] << 24); goto case 7;

case 7: b += ((int) url[k + 6] << 16); goto case 6;

case 6: b += ((int) url[k + 5] << 8); goto case 5;

case 5: b += ((int) url[k + 4]); goto case 4;

case 4: a += ((int) url[k + 3] << 24); goto case 3;

case 3: a += ((int) url[k + 2] << 16); goto case 2;

case 2: a += ((int) url[k + 1] << 8); goto case 1;

case 1: a += ((int) url[k + 0]); break;

}

List<long> mixx = Mix(a, b, c);

return (uint) mixx[2];

}

private List<long> Mix(long a, long b, long c)

{

a -= b; a -= c; a = (int) a ^ (ZeroFill(c, 13));

b -= c; b -= a; b ^= (int) a << 8;

c -= a; c -= b; c = (int) c ^ (ZeroFill(b, 13));

a -= b; a -= c; a = (int) a ^ (ZeroFill(c, 12));

b -= c; b -= a; b ^= (int) a << 16;

c -= a; c -= b; c = (int) c ^ (ZeroFill(b, 5));

a -= b; a -= c; a = (int) a ^ (ZeroFill(c, 3));

b -= c; b -= a; b ^= (int) a << 10;

c -= a; c -= b; c = (int) c ^ (ZeroFill(b, 15));

List<long> arr = new List<long>();

arr.Add(a);

arr.Add(b);

arr.Add(c);

return arr;

}

private long ZeroFill(long a, int b)

{

long z = 2147483648;

if ((z & a) > 0)

{

a = (int) a >> 1;

a = (int) a & (~z);

a = (int) a | 0x40000000;

a = (int) a >> (b - 1);

}

else

a = (int) a >> b;

return a;

}

private string GetResponseText(string url)

{

string pageText = "";

HttpWebRequest request = null;

WebResponse response = null;

System.IO.Stream stream = null;

System.IO.StreamReader reader = null;

try

{

request = (HttpWebRequest) WebRequest.Create(url);

request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)";

request.Timeout = 4 * 1000;

response = request.GetResponse();

stream = response.GetResponseStream();

reader = new System.IO.StreamReader(

stream, System.Text.Encoding.GetEncoding(1251));

pageText = reader.ReadToEnd();

reader.Close();

response.Close();

}

catch (WebException) // Ошибка соединения, либо у Гугла нет информации о странице

{

}

finally

{

if (response != null) response.Close();

if (stream != null) stream.Close();

if (reader != null) reader.Close();

}

return pageText;

}

}

Mad Cat
На сайте с 29.01.2006
Offline
89
#2

Alexander_fx, для Google есть Google API. 1000 запросов в сутки, XML.

Профессиональное тестирование ПО и web-сервисов (http://www.testlab2.com)
AF
На сайте с 06.12.2006
Offline
26
#3
Mad Cat:
Alexander_fx, для Google есть Google API. 1000 запросов в сутки, XML.

Вот непруха

Говорят что перестали подключать к этой фене. всех на ajax посылают.

И в догонку - подкажите кто нибудь - как беки сосчитать?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий