هل من أحد يساعني لفهم كيفية إسخراج المعلومات من المواقع بإستعمال فيسوال باسيك 2008 و أشكركم مسبقا لأنني في غاية الإحتياج لهذه المعلومات
هل من أحد يساعني لفهم كيفية إسخراج المعلومات من المواقع بإستعمال فيسوال باسيك 2008 و أشكركم مسبقا لأنني في غاية الإحتياج لهذه المعلومات
تحيـــــــاتي...
حدد ماذا تقصد باستخراج المعلومات
هل تقصد التعامل مع قواعد البيانات --- , ابحث فى المتدى لانه ملئ بمثل هذه المواضيع
ام هل تقصد قراءة محتويات المعلومات الموجودة فى الصفحات بدون قواعد بيانات ؟
Technical Lead Developer
اللهم قنى شر الجهل و الجهلاء
( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}
أقصد إستخراج كل محتوى الصفحة و وضعه في لابيل او تيكست بوكس ثم إلى قاعدة البياناة
تحيـــــــاتي...
هذا الكود يقوم بقراءة محتوى صفحة من على موقع انترنت إلى مربع نص :
' تعريف الكائن
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 وغيره وثم البحث عن عناوين العناصر و تحميل كل واحد على حدى. الأمر سيكون أكثر تعقيدا.
تحياتي...
شكرا أخي على جوابك
سأعطك مثال على ما أريد فعله بالظبط
أريد مثلا استخراج جميع المعلومات بخصوص المعاملات في هذا الموقع
و ذلك لجميع المؤسسات مثل
DELL ,Microsoft,.....
تحيـــــــاتي...
لاحظ معي أخي 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تحياتي...
dell&submit=GO
مع العلم ان
dell و هنالك اسماء عديدة لشركاة مثل
وهل من الممكن اضهار جميع المعلومات الخصصة لمعاملاة هذه الشركة في ليبللات
تحيـــــــاتي...
أرجو الإستسماح لكن أنا لا أعرف كيفية التعامل مع االكونسول فقط الوندوز أبليكايشن لذا فالكود الذي اعطيتني هل يمكن ان استعمله في الوندوز أبليكايشن و كيف اقوم باستخراج المعلومات المخصصة للمعاملات في لايبلات او تيكستبوكس و استسمح على هذا الازعاج
تحيـــــــاتي...
قم بزيادة الدالة 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:)تحياتي...
شكرا أخي على الإجابة السريعة لقد حاولت فعل ما قلت لي لكن من الممكن انني نسيت شيئا فلا يقبل اضهار شيء في الليبلات هل من الممكن ان تبعت لي بالمشروع لكي يتبين لي الخطأ و شكرا على تفهمك
تحيـــــــاتي...
لقد نسيت إدراج كود تحميل محتوى الصفحة في ردي السابق. المهم هذا مشروع صغير يبين الحل على مستوى تطبيقات نماذج ويندوز.
تحياتي...
لا تزعج نفسك اخي فلقد تمكنت من ايجاد الخطأ شكرا جزيلا على مساعدتك أو الله إدير بحسابك فهاد رمضان الكريم
تحيـــــــاتي...
لقد نسيت سؤالا هل من الممكن مثلا وضع اسم الشركة مثل dell في تيكست بوكس و من تم النقر على زر لكي يظهر لنا النتائج المتعلقة بشركة ما
تحيـــــــاتي...
نعم أخي, كل شيء ممكن. و لكنني لا أدري إذا كانت صفحات المواقع الأخرى لها نفس بنية الصفحة التي يشتغل عليها الكود. قد تضطر إلى وضع كود خاص بكل صفحة.
تحياتي...
لقد حاولت مع هذا الكود لكن لم ينجح الامر
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
تحيـــــــاتي...
أعطني بعض القيم التي يمكن أن أمررها للموقع عبر الكود :
Dim bytes As Byte() = wc.DownloadData("http://www.dividendinvestor.com/?symbol=val(TextBox1.text)&submit=GO")تحياتي...
هاهو البرنامج يعمل جيدا...
إبدأ بإدخل Symbol ثم انقر على الزر GO لتحميل الصفحة من الموقع إلى ذاكرة الحاسوب. بعده أذخل اسم المعلومة ثم انقر على ازر GET.
يمكنك تحرير البرنامج ليقوم بتحميل كل المعلومات دفعة و احدة.
تحياتي...
شكرا جزيل الشكر أخي
شكرا جزيل الشكر أخي
شكرا جزيل الشكر أخي
شكرا جزيل الشكر أخي
شكرا جزيل الشكر أخي
شكرا جزيل الشكر أخي
شكرا جزيل الشكر أخي
تحيـــــــاتي...
شكرا جزيلا على الردود الجميلة
لقد قمت بتعديلات واضفت قاعدة بيانات كمثال الى المشروع لكي أملأها بالمعلومات التي تستخرج من الموقع و التي تظهر في التيكستبوكس المشكلة هي أنه عندما أضغط على زر الملأ لققعدة البيانات تتم اعملية بنجاح إلا أنه لا يظهر سوى اصفر في قاعدة البيانات عندما أتفقدها
و لقد أرفقت المشروع لكي يتضح لكم المشكل و شكرا على المساعدة.
تحياتي...
تحيـــــــاتي...
المشكلة أخي تكمن في حجم البيانات التي يتم استيرادها و من تم تسجيلها على قاعدة البيانات. أنت حددت حجم كل حقل في nvarchar(50) و بعض المعلومات لها حجم أكبر من ذلك. يمكنك النقص من عدد المسافات الموجودة على كل معلومة و إن لزم الأمر truncate المعلومة حتى تستطيع تسجيلها في أحين الظروف.
تحياتي...
كيف يمكنك النقص من عدد المسافات الموجودة على كل معلومة عند الضغط على زر الحفض في قاعدة البيانات
و عذرا على الإزعاج لأنني لا أعلم بوجود هذه العملية
تحياتي و تقديراتي ...
تحيـــــــاتي...
استعمل مثلا الدالة Replace التي ستقوم بتقليص عدد المسافات إلى النصف :
currentclassrow.Item(6) = TextBox7.Text.Replace(" ", " ") ' Replace two space chars by oneتحياتي...
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…