PDA

View Full Version : جستجو در سایت های دیگر



maxpayn2
شنبه 24 شهریور 1386, 08:33 صبح
سلام
من یک سایت دارم که از خودش مطلبی نداره و فقط لینک چند تا سایت دیگه توش هست ، میخوام بپرسم چه طوری میشه در سایت اصلی یک search نوشت که در اون سایت های دیگه جستجو کنه و لینک نتیجه رو در خودش نشون بده ؟

ehsan2007
شنبه 24 شهریور 1386, 11:07 صبح
سلام دوست عزیز شما میتونید با این کد آدرس صفحه سایت مورد نظر رو بدید و تمامی کدهای صفحه اونو توی یک استرینگ قرار دهید و سپس در استرینگی که تعریف کرداید جستجو کنید

Dim Source As String = New System.IO.StreamReader(System.Net.WebRequest.Creat e("لینک یوزر").GetResponse.GetResponseStream(), System.Text.Encoding.UTF8).ReadToEnd

maxpayn2
شنبه 24 شهریور 1386, 14:58 عصر
اگه منظورتون رو درست فهمیده باشم باید مثلا اگه صفحان سایت های مورد نظر
200000 صفحه باشه باید کد 200000 صفحه رو به string تبدیل کنم ؟؟؟؟؟؟؟؟؟؟

ehsan2007
شنبه 24 شهریور 1386, 17:24 عصر
با کدی که من برای شما نوشتم که توی همین تالار گفتمان پیدا کردم شما فقط یک صفحه رو میتونی توی استرینگ نگه داری اونیکی شما میخوای میشه موتور جستجو با کد بالا شما مثلا صفحه سایت برنامه نویسیرو توی استرینگ نگه میداری و بعد دنبال چیزی که میخوای جستجو میکنی
فقط یک صفحه
بیشتر از این چیزی به ذهنم نمیرسه فعلا

Behrouz_Rad
شنبه 24 شهریور 1386, 22:12 عصر
Google این کار رو واست انجام میده.
پارامتر صفحه باید از نوع GET باشه.
کوئری ارسالی باید در کوئری استرینگ q باشه و ...
کدهاش رو در همین بخش میتونی پیدا کنی.

موفق باشید.

web developer
یک شنبه 25 شهریور 1386, 00:30 صبح
اگه منظورتون رو درست فهمیده باشم باید مثلا اگه صفحان سایت های مورد نظر
200000 صفحه باشه باید کد 200000 صفحه رو به string تبدیل کنم ؟؟؟؟؟؟؟؟؟؟

اگه بخوای تو این همه صفحه جستجو کنی باید اول یه اسپایدر (ROBOT) بنویسی تا تمام صفحات اون سایت رو برات تو دیتا بیس ذخیره کنه بعد تو دیتا بیس خودت باید سرچ کنی!
دقیقا همون کاری که search engine ها انجام میدن!

maxpayn2
یک شنبه 25 شهریور 1386, 08:21 صبح
Google این کار رو واست انجام میده.


اگه از گوگل استفاده کنم ، آیا کسی میفهمه ؟ یعنی تابلو میشه یا نه ؟


اگه بخوای تو این همه صفحه جستجو کنی باید اول یه اسپایدر (ROBOT) بنویسی تا تمام صفحات اون سایت رو برات تو دیتا بیس ذخیره کنه بعد تو دیتا بیس خودت باید سرچ کنی!
دقیقا همون کاری که search engine ها انجام میدن!

میشه بیشتر توضیح بدین ؟ نمونه کد دارین ؟

Behrouz_Rad
یک شنبه 25 شهریور 1386, 11:46 صبح
اگه از گوگل استفاده کنم ، آیا کسی میفهمه ؟ یعنی تابلو میشه یا نه ؟
تو دو راه رو پیش رو داری.
در حالت ساده و بدون دردسر، استفاده از WebRequest و WebResponse برای به دست آوردن نتایج جستجو از گوگل و پردازش HTML برگشتی.

در حالت پیچیده تر و استانداردتر، استفاده زا api ای که گوگل به همین منظور در اختیار توسعه گران قرار میده.
در سایت 4guysfromrolla مقاله ای در 2 قسمت در رابطه با نحوه ی استفاده از این api وجود داره.

موفق باشید.

web developer
یک شنبه 25 شهریور 1386, 15:30 عصر
در حالت ساده و بدون دردسر، استفاده از WebRequest و WebResponse برای به دست آوردن نتایج جستجو از گوگل و پردازش HTML برگشتی.


سلام

من از webRequest برای گوگل استفاده کردم نشد ولی تو یاهو جواب داد!
فکر میکنی مشکل از کجاست؟

گوگل فکر کنم اجازه ی این کارو نمیده!!!

نمونش تو امضام هست.

موفق باشی

Behrouz_Rad
یک شنبه 25 شهریور 1386, 16:36 عصر
خیر! مشکلی نداره.
من الان یک تابع نوشتم و با گوگل تست کردم و به خوبی جواب داد.


Private Function getContents(ByVal strPageAddress As String) As String
If (strPageAddress Is Nothing OrElse strPageAddress.Length = 0) Then Throw New ArgumentNullException("strPageAddress")
Dim myHttpWebResponse As HttpWebResponse = Nothing
Dim strHTML As String
Try
Dim myHttpWebRequest As HttpWebRequest = CType(WebRequest.Create(strPageAddress), HttpWebRequest)
myHttpWebResponse = CType(myHttpWebRequest.GetResponse(), HttpWebResponse)
Dim receiveStream As Stream = myHttpWebResponse.GetResponseStream()
Dim encode As System.Text.Encoding = System.Text.Encoding.GetEncoding("utf-8")
Dim readStream As New StreamReader(receiveStream, encode)
strHTML = readStream.ReadToEnd()

Return strHTML
Catch ex As System.Net.WebException
HttpContext.Current.Response.Write(ex.Message.ToSt ring())
Finally
If myHttpWebResponse IsNot Nothing Then myHttpWebResponse.Close()
End Try
End Function



Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Response.Write(getContents("http://www.google.com/search?hl=en&q=salam&btnG=Google+Search"))
End Sub

web developer
یک شنبه 25 شهریور 1386, 16:57 عصر
خیر! مشکلی نداره.
من الان یک تابع نوشتم و با گوگل تست کردم و به خوبی جواب داد.


Private Function getContents(ByVal strPageAddress As String) As String
If (strPageAddress Is Nothing OrElse strPageAddress.Length = 0) Then Throw New ArgumentNullException("strPageAddress")
Dim myHttpWebResponse As HttpWebResponse = Nothing
Dim strHTML As String
Try
Dim myHttpWebRequest As HttpWebRequest = CType(WebRequest.Create(strPageAddress), HttpWebRequest)
myHttpWebResponse = CType(myHttpWebRequest.GetResponse(), HttpWebResponse)
Dim receiveStream As Stream = myHttpWebResponse.GetResponseStream()
Dim encode As System.Text.Encoding = System.Text.Encoding.GetEncoding("utf-8")
Dim readStream As New StreamReader(receiveStream, encode)
strHTML = readStream.ReadToEnd()

Return strHTML
Catch ex As System.Net.WebException
HttpContext.Current.Response.Write(ex.Message.ToSt ring())
Finally
If myHttpWebResponse IsNot Nothing Then myHttpWebResponse.Close()
End Try
End Function



Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Response.Write(getContents("http://www.google.com/search?hl=en&q=salam&btnG=Google+Search"))
End Sub


با تشکر فراوان :تشویق:

من هم از این کد استفاده میکردم ولی نمی شد!
تنها فرق کد من با شما در نوع متغیر receiveStream بود که من استرینگ گرفته بودم!
تو یاهو درست کار میکرد ولی تو گوگل نه که با کمک شما درست شد.

متشکرم

maxpayn2
دوشنبه 26 شهریور 1386, 08:13 صبح
سلام آقای راد
خیلی ممنون ، یه چیزی رو نفهمیدم ، اگه بخوام مثلا فقط در 5 تا سایت مشخص جستجو کنه باید چی کار کنم ؟ اگه یه سایت باشه میتونیم بنویسیم "as_sitesearch=domain" و به جای domain نام دامنه مورد نظر رو بنویسیم ، ولی برای چند تا سایت چی ؟ راستی نمیشه کاری کرد که لوگوی google و ... رو نشون نده و فقط نتایج جستجو رو نشون بده ؟

web developer
دوشنبه 26 شهریور 1386, 10:48 صبح
سلام



یه چیزی رو نفهمیدم ، اگه بخوام مثلا فقط در 5 تا سایت مشخص جستجو کنه باید چی کار کنم ؟ اگه یه سایت باشه میتونیم بنویسیم "as_sitesearch=domain" و به جای domain نام دامنه مورد نظر رو بنویسیم ، ولی برای چند تا سایت چی ؟


شما میتونید از Loop استفاده کنید و یا از For , Next رشته جستجو رو تو آرایه بریزید و این کد رو به تعدا مشخص تکرار کنید.



راستی نمیشه کاری کرد که لوگوی google و ... رو نشون نده و فقط نتایج جستجو رو نشون بده ؟

شما باید کار با تگ های HTML رو بلد باشید و اون چیزی رو که میخواید از درون سورس بدست اومده استخراج کنید.

موفق باشید

maxpayn2
دوشنبه 26 شهریور 1386, 12:26 عصر
میشه در مورد کار با تگ ها HTML بیشتر توضیح بدین ؟

web developer
دوشنبه 26 شهریور 1386, 17:07 عصر
راه های مختلفی هست میتونی سرچ کنی!

اینو ببین:

http://www.codeproject.com/asp/removehtml.asp

اگه به نتیجه نرسیدی میتونی از دستورات کار با رشته ها مثل: inStr , mid , replace و ... استفاده کنی.

موفق باشید.