نقل قول: گرفتن اطلاعات از گوگل
با سلام
درخواستی که میزنید سمت گوگل با کلاس webbrowser یا هرچی که دوست داشتید باید همچین چیزی باشه برای قسمت متنی:
https://www.google.com/search?q=<SearchForWhat>
و بعد از اینکه صفحه complete شد بخونیدش...
قسمت جست و جوی عکسی دوتا ره حل داره:
۱- یه جا آپلود بشه و آدرسش راحت ارسال داخل input مورد نظر قرار بگیره
۲- ببینید که آپلود عکس مقصدش کجاست (اینو فکر کنم با Tamper Data ی فایر فاکس میشه فهمید) و ارسالش کنید (که اینو نمیدونم دقیقا چجوریه داستانش)
قسمت خوندنش نسبت به ارسالش خیلی کاری نداره :لبخند:
که میفرسته به https://www.google.com/searchbyimage/upload
که البته ظاهرا خیلی چیزا ارسال میکنه
نقل قول: گرفتن اطلاعات از گوگل
ممنون از راهنمایی شما
ولی من نتونستم کدشو بنویسم.
var url = "https://www.google.com/search?q=" + HttpUtility.UrlEncode("sami")); using (var webClient = new WebClient())
{
textBox1.Text = webClient.DownloadString(url);
}
این تکه کد رو پیدا کردم ولی داخل تکست باکس مواردی که میخوام بعد جستجو نمایش میده رو بدست بیارم.
نقل قول: گرفتن اطلاعات از گوگل
دوستان من این راه رو هم برای سرچ در گوگل رفتم ولی متاسفانه اونجایی که باید api کلید بسازیم بعد ساخت کلید در برنامم خطا میده که این فعال نشده برای فعالسازیش هم انگار بایستی در حسابی که ساختم پول واریز کنم چرا که مشخصات ازم میخواد !
const string apiKey = "AIzaSyCbMKpyLqUH_6Nu9XwRA9r1DY7_sluR5c0"; const string searchEngineId = "006468701770972545753:csfoslx7wwy";
const string query = "دنیای نرم افزار";
var customSearchService = new CustomsearchService(new BaseClientService.Initializer { ApiKey = apiKey });
var listRequest = customSearchService.Cse.List(query);
listRequest.Cx = searchEngineId;
textBox1.Text += "Start..." ;
IList<Result> paging = new List<Result>();
var count = 0;
while (paging != null)
{
listRequest.Start = count * 10 + 1;
paging = listRequest.Execute().Items;
if (paging != null)
foreach (var item in paging)
textBox1.Text += "Title : " + item.Title + Environment.NewLine + "Link : " + item.Link +
Environment.NewLine + Environment.NewLine ;
count++;
}
توضیحات در لینک زیر :
http://hintdesk.com/c-how-to-use-goo...om-search-api/
حال به نظرتون چیکار کنم؟
یه راه ساده برای دریافت نتایج جستجو در گوگل وجود نداره؟اگر با دستورات پست قبلی بشه اینکارو انجام داد این راه api کلید رو استفاده نکنیم.
نقل قول: گرفتن اطلاعات از گوگل
سلام مجدد
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("http://www.google.com/search?q=" + textBox1.Text);
webBrowser1.DocumentCompleted += WebBrowser1_DocumentCompleted;
}
private void WebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
string doc = webBrowser1.DocumentText;
richTextBox1.Text = doc;
}
یه webbrowser نیاز دارید + event complete
بعد از لود شدن صفحه برای بیرون کشیدن اطلاعات به چند روش میشه عمل کرد من خودم از regex راحتتر استفاده میکنم به این صورت که:
۱- کل قسمت نتایج رو بیرون میکشم
پترن: (?<=<div class=\"g\">).+(?=<\/div>)
۲- با استفاده از ۱ ،نتایجم رو تیکه تیکه میکنم، پترن:
(?<=<!--m-->).+?(?=<!--n-->)
۳- حالا از ۲، استفاده میکنم و آدرس سایت رو بیرون میارم، پترن:
(?<=<cite class=\"_Rm\">).+?(?=</cite>)
۴- از ۲ استفاده میکنم و توضیحات رو بیرون میکشم، پترن:
(?<=<span class=\"st\">).+?(?=</span>)
۵- از ۲ استفاده میکنم و آدرس رو درمیارم با دو پترن به این صورت:
اول h3 رو بیرون میکشم: (?<=<h3 class=\"r\">).+(?=</h3>)
بعد از نتیجه اول استفاده میکنم و تکست تگ a رو بیرون میکشم : (?<=\">).+?(?=</a>)
نقل قول: گرفتن اطلاعات از گوگل
تشکر از شما
ولی فکر میکنم دراین حالت یه ذره سرعت کار میاد پایین.
چون میخواستم من اینو در عین لحظه به ربات تلگرامم ارسال کنم.
این روشی که گفتید من امتحان نکردم متاسفانه روی نتایج فارسی امکان پذیر نیست! الان خودتون با کدی که نوشتید سورس گوگل رو بدست بیارید.خواهید دید که اصلا متن فارسی داخل سورس برای استخراج وجود ندارد!!!!فک کنم باید به utf تبدیل بشه.
در انجمن در لینک زیر من یه سورسی پیدا کردم که بعد از جستجو لینک نتایج سایت های جستجو شده رو به من میده .
https://barnamenevis.org/showthread.p...=1#post2236914
ولی متاسفانه من به دنبال گرفتن عناوین این نتایج هستم.دوستان به نظرتون نمیشه این سورس رو ویرایش کرد تا فقط عناوین رو به ما بده.فک کنم این راه از راه قبلی سریعتر باشه.
نقل قول: گرفتن اطلاعات از گوگل
درسته من انگلیسی رو چک کرده بودم
برای فارسی باید سورس رو نگاه کنید
الان مثلا قسمت توضیحاتش رو توی فارسی میتونید از پترن:
(?<=<span dir="rtl"><em>).+?(?=<\/span>)
بدست بیارید
سرعت regex خیلی بالاست :\
نقل قول: گرفتن اطلاعات از گوگل
نه ببینید
منظورم این هست که در سورس کلا من متن فارسی نمیبنم اصلا !
با دستور زیر سورس کد رو بدست اوردم و متن فارسی مشاهده نکردم.
var webClient = new WebClient();
var pageSourceCode = webClient.DownloadString("https://www.google.com/search?q=" + textBox1.Text );
textBox2.Text = pageSourceCode;
حتی با دستور زیر به utf تبدیل کردم بازهم متن فارسی داخلش نیست.
var webClient = new WebClient();
var pageSourceCode = webClient.DownloadString("https://www.google.com/search?q=" + textBox1.Text );
//تبدیل به یوتی اف
byte[] b = System.Text.Encoding.Default.GetBytes(pageSourceCo de);
pageSourceCode = System.Text.Encoding.UTF8.GetString(b);
///
textBox2.Text = pageSourceCode;
نقل قول: گرفتن اطلاعات از گوگل
سلام
برای گرفتن نتایج راه ساده و تک خطی اینه با گت المنت ایدی ires رو در ریچ تکست باکس بریزی
نتایج گوگل در ires هستند
نمونه :
این برای HTML
کد HTML:
richTextBox1.Text = webBrowser3.Document.GetElementById("ires").InnerHtml;
اینم TEXT
کد HTML:
richTextBox1.Text = webBrowser3.Document.GetElementById("ires").InnerText;
نقل قول: گرفتن اطلاعات از گوگل
نقل قول:
نوشته شده توسط
soheilnew
سلام
برای گرفتن نتایج راه ساده و تک خطی اینه با گت المنت ایدی ires رو در ریچ تکست باکس بریزی
نتایج گوگل در ires هستند
نمونه :
این برای HTML
کد HTML:
richTextBox1.Text = webBrowser3.Document.GetElementById("ires").InnerHtml;
اینم TEXT
کد HTML:
richTextBox1.Text = webBrowser3.Document.GetElementById("ires").InnerText;
تشکر از شما
ولی من نمیخوام از وب بروزر استفاده کنم...راه دیگری نداره؟
نقل قول: گرفتن اطلاعات از گوگل
البته یادم رفت اضافه کنم که برای جستجوی متن فارسی هم باید بصورت زیر متن را بفرستی
کد HTML:
webBrowser3.Navigate(Uri.EscapeUriString("http://www.bing.com/search?q=" +textBox1.Text));
برای حل مشکل علامت ??????? بجای متون فارسی از Uri.EscapeUriString استفاده کنید
نقل قول: گرفتن اطلاعات از گوگل
نقل قول:
نوشته شده توسط
samiasoft
تشکر از شما
ولی من نمیخوام از وب بروزر استفاده کنم...راه دیگری نداره؟
منم برای رباتم به دلیل محدودیت گوگل مجبورم از وب بروز استفاده کنم که بهترین نتیجه رو داده
تنها راه حل خوب اینه فعلا البته از نظر من
نمیدونم دوستان دیگه چه نظری دارند
نقل قول: گرفتن اطلاعات از گوگل
دوستان مشکل نامفهوم بودن متن فارسی حل شد.:لبخند:کلی حرص خوردیم تا به کمک خود گوگل حل کنیم.
بایستی به اخر ادرس عبارت &=utf8&oe=utf8 را اضافه میکردیم.
var webClient = new WebClient();
var pageSourceCode = webClient.DownloadString("https://www.google.com/search?q=" + textBox1.Text + "&=utf8&oe=utf8");
//تبدیل به یوتی اف
byte[] b = System.Text.Encoding.Default.GetBytes(pageSourceCo de);
pageSourceCode = System.Text.Encoding.UTF8.GetString(b);
///
textBox2.Text = pageSourceCode;
الان دیگه میشه با ریجکس نتایج رو استخراج کرد.