اخواني اعرف طريقة الحصول على بيانات من جدول في صفحة ويب و بقية الادوات و الوسوم و العقد
لكن واجهتني صفحة أقرب إلى ملف نصي منها إلى صفحة الويب و محتويات الصفحة كالتالي:
الف شكر اخي احمد على التفاعل و الرد
المشكلة ان الاداة WebBrowser لا تعرض الصفحة بل تقوم بعرض مربع حوار التحميل لتنزيل الملف الرابط لجلب اسعار الذهب قد تستفيد منه "http://www.goldsilverapps.com/gs/lp/v1/lp/1" انا اتعامل مع الصفحة بالكود MSHTML.HTMLDocument
10-09-17, 09:47 AM (آخر تعديل لهذه المشاركة : 10-09-17, 09:52 AM {2} بواسطة Mohamad Anan.)
اخي سعود
الفكرة هي تحويل برنامج اندرويد ليعمل على ويندوز
اي حل لعرض اول رقم في الصفحة و هو سعر الاونصة داخل مربع نص اكون شاكر لتعاونكم
الصفحة التي في الزابط مجهزة ليتعامل معها برنامج اندرويد و هي تحتوي فقط على مصفوفة
السلام عليكم و رحمة الله و بركاته
أخي الكريم:
في المثال المرفق تم الحصول على المطلوب بعد تحميل الصفحة على القرص
كان الهدف جلب القيمة مباشرة دون الحاجة لحفظ الملف على القرص
لأن البرنامج يحدث القيمة بشكل مستمر خلال فترة قصيرة
اخواني الكرام الفضول شدد علي بالمشاركة بالموضوع
اول شي انظرو لصورة التطبيق:
واجهة vb6.0 ترسل رابط الصفحة وترسل كلمة المفتاح كما هو واضح بالصورة.
كود :
Private Sub Command1_Click()
Dim ob As Object
Set ob = CreateObject("GetStringsFromHtmlSource.GetStrings")
Text1.Text = ob.gstr("http://www.goldsilverapps.com/gs/lp/v1/lp/1", k.Text)
End Sub
وملف dll يحمل الصفحة ويرجع قيمة المفتاح.
من جهة الدوت نت عملت كلاس ليبراري
GetStringsFromHtmlSource.dll
و هذا هو محتواه:
كود :
Imports System.Text.RegularExpressions
Public Class GetStrings
Public Function gstr(ByVal url As String, ByVal k As String) As String
Dim lstkeys As New List(Of String)
Dim lstvalues As New List(Of String)
Dim html As String = ""
Dim wc As New Net.WebClient
html = wc.DownloadString(url)
For Each h As String In html.Split(",")
Dim str As String = """(.*?)"":.*?""(.*?)"""
Dim reg As New Regex(str, RegexOptions.IgnoreCase)
For Each ma As Match In reg.Matches(h)
lstkeys.Add(ma.Groups(1).Value)
lstvalues.Add(ma.Groups(2).Value)
Next
Next
Return lstvalues(lstkeys.IndexOf(k))
End Function
End Class
هذا من باب الفضول ليس الا
و هذا لا يعني اني لا اريد تقديم المعلومة لكن اذا جاء الفضول متاخرا
الله يكتب اجر الجميع.
اذا استخدمت (Mid(StrSource, 9, 7 ستواجه مشكله لو نقص طول الرقم عن سبعه
الافضل تستخدم RegEx وهذه طريقتها
اضف المرجع التالى Microsoft VBScript Regular Expressions 5.5
وهذا تعديل الكود
PHP كود :
Private Sub cmdGetPrice_Click()
cmdGetPrice.Enabled = False
Dim StrSource As String StrSource = GetHTMLSource("http://www.goldsilverapps.com/gs/lp/v1/lp/1") 'Reference: Microsoft VBScript Regular Expressions 5.5' Dim myRegExp As RegExp Set myRegExp = New RegExp myRegExp.Pattern = "(\d+\.?\d+)" Dim myMatches As MatchCollection Set myMatches = myRegExp.Execute(StrSource) If myMatches.Count > 0 Then lblPrice.Caption = myMatches(0).Value End If cmdGetPrice.Enabled = True End Sub