الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية إسخراج المعلومات من المواقع بإستعمال فيسوال باسيك 2008

بدأه 9277463 في 3 سبتمبر 2009 · 22 رد · 1,320 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هل من أحد يساعني لفهم كيفية إسخراج المعلومات من المواقع بإستعمال فيسوال باسيك 2008 و أشكركم مسبقا لأنني في غاية الإحتياج لهذه المعلومات

تحيـــــــاتي...

#2

حدد ماذا تقصد باستخراج المعلومات

هل تقصد التعامل مع قواعد البيانات --- , ابحث فى المتدى لانه ملئ بمثل هذه المواضيع

ام هل تقصد قراءة محتويات المعلومات الموجودة فى الصفحات بدون قواعد بيانات ؟

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#3

أقصد إستخراج كل محتوى الصفحة و وضعه في لابيل او تيكست بوكس ثم إلى قاعدة البياناة

تحيـــــــاتي...

#4

هذا الكود يقوم بقراءة محتوى صفحة من على موقع انترنت إلى مربع نص :

		' تعريف الكائن
		Dim wc As New System.Net.WebClient()
		' قراءة محتوى الصفحة
		Dim bytes As Byte() = wc.DownloadData("http://www.google.com")
		If bytes.Length > 0 Then
			' تحويل المعلومات المحملة إلى نص مقروء
			TextBox1.Text = System.Text.Encoding.Default.GetString(bytes)
		End If
		wc.Dispose()

بالطبع, إذا كنت تحتاج إلى تحميل الصور و العناصر الأخرى للصفحة, ستحتاج إلى استعراض محتوى الصفحة من كود html وغيره وثم البحث عن عناوين العناصر و تحميل كل واحد على حدى. الأمر سيكون أكثر تعقيدا.

تحياتي...

#5

شكرا أخي على جوابك

سأعطك مثال على ما أريد فعله بالظبط

أريد مثلا استخراج جميع المعلومات بخصوص المعاملات في هذا الموقع

و ذلك لجميع المؤسسات مثل

DELL ,Microsoft,.....

تحيـــــــاتي...

#6

لاحظ معي أخي 92774663. هذا مقطع من كود html للمعلومة Re-Investment Agent: amstock.com

			  <td class="hyper13" bgcolor="#dcdcdc">Re-Investment Agent: </td>
			  <td class="hyper13"><div align="right">
				  amstock.com			  </div></td>

الطريقة التي اقترح عليك هي الوصول إلى المعلومة عن طريق مفتاح و هو اسم المعلومة و لأن كل المعلومات مكتوبة بنفس الطريقة فالوصول مثلا إلى اسم المعلومة سيوصلنا إلى محتواها. و هذا ما تقوم به هذه الدالة :

	Public Function GetItemFromWebPage(ByVal itemName As String) As String
		Dim div As String = "<div align=""right"">"
		Dim s As String = doc.Substring(doc.IndexOf(itemName))
		s = s.Substring(s.IndexOf(div) + div.Length)
		s = s.Substring(0, s.IndexOf("</div>"))
		Return s.Trim()
	End Function

و هذا هو الكود الكامل لبرنامج كونسول يمكن من قراءة المعلومات على الصفحة :

Module Module1
	Dim doc As String

	Sub Main()
		' تعريف الكائن
		Dim wc As New System.Net.WebClient()
		' قراءة محتوى الصفحة
		Dim bytes As Byte() = wc.DownloadData("http://www.dividendinvestor.com/?symbol=dell&submit=GO")
		If bytes.Length > 0 Then
			' تحويل المعلومات المحملة إلى نص مقروء
			doc = System.Text.Encoding.Default.GetString(bytes)
		End If
		wc.Dispose()

		' قراءة محتوى الصفحة
		Console.WriteLine("Re-Investment Agent: " + GetItemFromWebPage("Re-Investment Agent:"))
		Console.WriteLine("Direct Purchase Minimum: " + GetItemFromWebPage("Direct Purchase Minimum:"))
		Console.WriteLine("Optional Cash Pay Min-Max: " + GetItemFromWebPage("Optional Cash Pay Min-Max:"))
		Console.WriteLine("Optional Cash Payment Freq: " + GetItemFromWebPage("Optional Cash Payment Freq:"))
	End Sub

	Public Function GetItemFromWebPage(ByVal itemName As String) As String
		Dim div As String = "<div align=""right"">"
		Dim s As String = doc.Substring(doc.IndexOf(itemName))
		s = s.Substring(s.IndexOf(div) + div.Length)
		s = s.Substring(0, s.IndexOf("</div>"))
		Return s.Trim()
	End Function

End Module

تحياتي...

#7

dell&submit=GO

مع العلم ان





class="postcolor">http://www.dividendinvestor.com/?symbol=هل من الممكن إضهار

dell و هنالك اسماء عديدة لشركاة مثل

وهل من الممكن اضهار جميع المعلومات الخصصة لمعاملاة هذه الشركة في ليبللات

تحيـــــــاتي...

#8

أرجو الإستسماح لكن أنا لا أعرف كيفية التعامل مع االكونسول فقط الوندوز أبليكايشن لذا فالكود الذي اعطيتني هل يمكن ان استعمله في الوندوز أبليكايشن و كيف اقوم باستخراج المعلومات المخصصة للمعاملات في لايبلات او تيكستبوكس و استسمح على هذا الازعاج

تحيـــــــاتي...

#9

قم بزيادة الدالة GetItemFromWebPage في أي مكان داخل الفئة Form في مشروعك :

	Public Function GetItemFromWebPage(ByVal itemName As String) As String
		Dim div As String = "<div align=""right"">"
		Dim s As String = doc.Substring(doc.IndexOf(itemName))
		s = s.Substring(s.IndexOf(div) + div.Length)
		s = s.Substring(0, s.IndexOf("</div>"))
		Return s.Trim()
	End Function

و بعد ذلك استعمل كود كالتالي لتحميل المعلومات إلى مربعات النص و لابلات :

		' قراءة محتوى الصفحة
		Label1.Text = GetItemFromWebPage("Re-Investment Agent:")
		Label2.Text = GetItemFromWebPage("Direct Purchase Minimum:")
		Label3.Text = GetItemFromWebPage("Optional Cash Pay Min-Max:")
		Label4.Text = GetItemFromWebPage("Optional Cash Payment Freq:)

تحياتي...

#10

شكرا أخي على الإجابة السريعة لقد حاولت فعل ما قلت لي لكن من الممكن انني نسيت شيئا فلا يقبل اضهار شيء في الليبلات هل من الممكن ان تبعت لي بالمشروع لكي يتبين لي الخطأ و شكرا على تفهمك

تحيـــــــاتي...

#11

لقد نسيت إدراج كود تحميل محتوى الصفحة في ردي السابق. المهم هذا مشروع صغير يبين الحل على مستوى تطبيقات نماذج ويندوز.

تحياتي...

WindowsApplication4.rar

#12

لا تزعج نفسك اخي فلقد تمكنت من ايجاد الخطأ شكرا جزيلا على مساعدتك أو الله إدير بحسابك فهاد رمضان الكريم

تحيـــــــاتي...

#13

لقد نسيت سؤالا هل من الممكن مثلا وضع اسم الشركة مثل dell في تيكست بوكس و من تم النقر على زر لكي يظهر لنا النتائج المتعلقة بشركة ما

تحيـــــــاتي...

#14

نعم أخي, كل شيء ممكن. و لكنني لا أدري إذا كانت صفحات المواقع الأخرى لها نفس بنية الصفحة التي يشتغل عليها الكود. قد تضطر إلى وضع كود خاص بكل صفحة.

تحياتي...

#15

لقد حاولت مع هذا الكود لكن لم ينجح الامر



Dim wc As New System.Net.WebClient()

Dim bytes As Byte() = wc.DownloadData("http://www.dividendinvestor.com/?symbol=val(TextBox1.text)&submit=GO")
If bytes.Length > 0 Then

doc = System.Text.Encoding.Default.GetString(bytes)
End If
wc.Dispose()

Label1.Text = GetItemFromWebPage("Web Site:")
Label2.Text = GetItemFromWebPage("Sector:")
Label3.Text = GetItemFromWebPage("Segment:")
Label4.Text = GetItemFromWebPage("Net Income:")
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

تحيـــــــاتي...

#16

أعطني بعض القيم التي يمكن أن أمررها للموقع عبر الكود :

Dim bytes As Byte() = wc.DownloadData("http://www.dividendinvestor.com/?symbol=val(TextBox1.text)&submit=GO")

تحياتي...

#17

مثلا

ABT

ADX

AET

APD

BDX

تحياتي...

تحيـــــــاتي...

#18

هاهو البرنامج يعمل جيدا...

post-207152-1252168408_thumb.jpg

إبدأ بإدخل Symbol ثم انقر على الزر GO لتحميل الصفحة من الموقع إلى ذاكرة الحاسوب. بعده أذخل اسم المعلومة ثم انقر على ازر GET.

يمكنك تحرير البرنامج ليقوم بتحميل كل المعلومات دفعة و احدة.

تحياتي...

WindowsApplication4.rar

#19

شكرا جزيل الشكر أخي

شكرا جزيل الشكر أخي

شكرا جزيل الشكر أخي

شكرا جزيل الشكر أخي

شكرا جزيل الشكر أخي

شكرا جزيل الشكر أخي

شكرا جزيل الشكر أخي

تحيـــــــاتي...

#20

شكرا جزيلا على الردود الجميلة

لقد قمت بتعديلات واضفت قاعدة بيانات كمثال الى المشروع لكي أملأها بالمعلومات التي تستخرج من الموقع و التي تظهر في التيكستبوكس المشكلة هي أنه عندما أضغط على زر الملأ لققعدة البيانات تتم اعملية بنجاح إلا أنه لا يظهر سوى اصفر في قاعدة البيانات عندما أتفقدها

و لقد أرفقت المشروع لكي يتضح لكم المشكل و شكرا على المساعدة.

تحياتي...

WindowsApplication4_base_de_donn_es.zip

تحيـــــــاتي...

#21

المشكلة أخي تكمن في حجم البيانات التي يتم استيرادها و من تم تسجيلها على قاعدة البيانات. أنت حددت حجم كل حقل في nvarchar(50) و بعض المعلومات لها حجم أكبر من ذلك. يمكنك النقص من عدد المسافات الموجودة على كل معلومة و إن لزم الأمر truncate المعلومة حتى تستطيع تسجيلها في أحين الظروف.

تحياتي...

#22

كيف يمكنك النقص من عدد المسافات الموجودة على كل معلومة عند الضغط على زر الحفض في قاعدة البيانات

و عذرا على الإزعاج لأنني لا أعلم بوجود هذه العملية

تحياتي و تقديراتي ...

تحيـــــــاتي...

#23

استعمل مثلا الدالة Replace التي ستقوم بتقليص عدد المسافات إلى النصف :

 currentclassrow.Item(6) = TextBox7.Text.Replace("  ", " ") ' Replace two space chars by one

تحياتي...

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…