PDA

View Full Version : سوال: چگونه نرم افزار جستجو کننده گوگل بسازیم؟ (یک نمونه آوردم)



dele_ghamgin_2008
دوشنبه 09 شهریور 1394, 16:40 عصر
سلام. چگونه نرم افزاری بسازیم که بهش یک کلمه رو بدیم و بگیم بره از سایت گوگل این کلمه رو جستجو کنه و یک اسم سایت به برنامه بدیم و نرم افزار بیاد بگرده که اگر این سایت در این کلمه جز 10 صفحه اول گوگل هست یا خیر. اگر بود مشخص کنه که سایت در کدام صفحه و پوزیشن چندم قرار دارد؟
هر صفحه دارای 10 پوزیشن می باشد درون گوگل.
نمونه ساخته شده را برایتان پیوست می کنم.
با برنامه دات پیک میشه سورس رو بدست آورد ولی من اون تیکه که سرچ میکنه و شرط رو بر قرار میکنه رو میخوام. لطفا کمک کنید.

dele_ghamgin_2008
دوشنبه 09 شهریور 1394, 17:08 عصر
کد را برایتان می گذارم تا بهتر کمک کنید با تشکر.

public frmShowResult.GoogleReturn GetPlaceKeywordInGoogle(int StartPageID, string Text, string SiteName, string endpageid, bool isProxy, string Proxyip, Decimal ProxyPort, string ProxyUsername, string ProxyPassword)
{
int num1 = 20;
if (endpageid != "")
num1 = Convert.ToInt32(endpageid);
int num2 = StartPageID - 1;
Text = Text.Replace(" ", "+");
frmShowResult.GoogleReturn googleReturn = new frmShowResult.GoogleReturn(0, 0, "", frmShowResult.GoogleExeption.Start);
string str1 = "https://www.google.com/search?q=" + Text;
HtmlWeb htmlWeb = new HtmlWeb();
bool flag1 = false;
while (!flag1)
{
string url = str1;
if (num2 > 0)
url = url + "&start=" + (num2 * 10).ToString();
HtmlAgilityPack.HtmlDocument htmlDocument;
try
{
htmlDocument = !isProxy ? htmlWeb.Load(url) : htmlWeb.Load(url, Proxyip, Convert.ToInt32(ProxyPort), ProxyUsername, ProxyPassword);
}
catch
{
return new frmShowResult.GoogleReturn(num2 + 1, 0, "Google Error", frmShowResult.GoogleExeption.SearchEngeningError);
}
string xpath = "//*[@id='search']/div/ol/li";
HtmlNodeCollection htmlNodeCollection = htmlDocument.DocumentNode.SelectNodes(xpath);
if (htmlNodeCollection == null)
{
int num3 = (int) MessageBox.Show("متاسفانه موتور جستجو شما را شناسایی کرده است ...باید کمی صبر کنید یا از قسمت پراکسی استفاده کنید");
googleReturn.ExeptionCode = frmShowResult.GoogleExeption.SearchEngeningError;
googleReturn.PageID = 0;
googleReturn.Rowindex = 0;
return googleReturn;
}
int _Rowindex = 0;
foreach (HtmlNode htmlNode in (IEnumerable<HtmlNode>) htmlNodeCollection)
{
++_Rowindex;
string str2 = (num2 + 1).ToString() + ":" + _Rowindex.ToString() + " ";
try
{
string str3 = "";
bool flag2 = true;
string str4 = "";
string innerText;
if (htmlNode.ChildNodes[0].ChildNodes.Count == 1)
{
innerText = htmlNode.ChildNodes[0].ChildNodes[0].Attributes["href"].Value;
str3 = htmlNode.ChildNodes[0].ChildNodes[0].InnerText;
}
else if (htmlNode.ChildNodes[0].Name == "span")
{
innerText = htmlNode.ChildNodes[2].ChildNodes[0].InnerText;
str3 = innerText;
flag2 = false;
str4 = innerText;
}
else
{
innerText = htmlNode.ChildNodes[0].ChildNodes[0].ChildNodes[0].ChildNodes[0].ChildNodes[0].Attributes["href"].Value;
str3 = htmlNode.ChildNodes[0].ChildNodes[0].ChildNodes[0].ChildNodes[0].InnerText;
}
if (innerText != "")
{
string str5 = "http://";
if (innerText.Contains("https://"))
str5 = "https://";
if (flag2)
str4 = innerText.Split(new string[1]
{
str5
}, StringSplitOptions.None)[1];
string Text1 = str2 + str4.Substring(0, str4.IndexOf('/'));
if (innerText.ToLower().Contains(SiteName))
{
this.AddItem(Text1, true);
googleReturn.PageID = num2 + 1;
googleReturn.Rowindex = _Rowindex;
googleReturn.url = innerText;
googleReturn.ExeptionCode = frmShowResult.GoogleExeption.Find;
flag1 = true;
break;
}
this.AddItem(Text1, false);
}
else
this.AddItem("ناشناخته", false);
}
catch
{
this.AddItem("ناشناخته", false);
}
}
if (num2 > num1)
return new frmShowResult.GoogleReturn(num2 + 1, _Rowindex, "notfound", frmShowResult.GoogleExeption.notFound);
++num2;
}
return googleReturn;
}

dele_ghamgin_2008
چهارشنبه 11 شهریور 1394, 18:57 عصر
لطفا اگر کسی اطلاعاتی داره راهنمایی کنه.
میخوام ده سایتی که توی گوگل نمایش داده میشه رو مثل این برنامه استخراج کنم.

pbm_soy
چهارشنبه 11 شهریور 1394, 22:57 عصر
یه زمانی گوگل وب سرویس برای استفاده ازذموتور سرچش داشت! الان نمیدونم هنوزم دارد یا نه ویا رایگان است یا خیر!
البته شما میتوانید از وب سرویس ارایه شده رایگان موتورهای دیگه هم استفاده کنید
این روش استفاده شده هم منطقی است و اصل کارش پارس کردن html خروجی موتور جستجو است

dele_ghamgin_2008
سه شنبه 24 شهریور 1394, 09:25 صبح
یه زمانی گوگل وب سرویس برای استفاده ازذموتور سرچش داشت! الان نمیدونم هنوزم دارد یا نه ویا رایگان است یا خیر!
البته شما میتوانید از وب سرویس ارایه شده رایگان موتورهای دیگه هم استفاده کنید
این روش استفاده شده هم منطقی است و اصل کارش پارس کردن html خروجی موتور جستجو است

سلام. متاسفانه جواب سوالم رو دریافت نکردم.

dele_ghamgin_2008
چهارشنبه 22 مهر 1394, 18:13 عصر
دوستان اگر کسی اطلاعاتی دارد لطفا دریغ نکند