السلام عليكم و رحمة الله و بركاته
اخواني اعرف طريقة الحصول على بيانات من جدول في صفحة ويب و بقية الادوات و الوسوم و العقد
لكن واجهتني صفحة أقرب إلى ملف نصي منها إلى صفحة الويب و محتويات الصفحة كالتالي:
{"Name1": "Value1", "Name2": "Value2", "Name3": "Value3"}
كيف يمكن الحصول على القيم من هذه الصفحة و هي لا تحتوي على اي وسوم و جسم او عنوان او اي كود مصدري
فقط تحتوي على السطر السابق
وعليكم السلام ورحمة الله وبركاته
أهلا بك أخي الكريم , يمكنك الحصول على محتوى الصفحة من خلال الأمر :
PHP كود :
WebBrowser1.document.body.outerText
الف شكر اخي احمد على التفاعل و الرد
المشكلة ان الاداة WebBrowser لا تعرض الصفحة بل تقوم بعرض مربع حوار التحميل لتنزيل الملف
الرابط لجلب اسعار الذهب قد تستفيد منه
"http://www.goldsilverapps.com/gs/lp/v1/lp/1"
انا اتعامل مع الصفحة بالكود
MSHTML.HTMLDocument
اخي سعود
الفكرة هي تحويل برنامج اندرويد ليعمل على ويندوز
اي حل لعرض اول رقم في الصفحة و هو سعر الاونصة داخل مربع نص اكون شاكر لتعاونكم
الصفحة التي في الزابط مجهزة ليتعامل معها برنامج اندرويد و هي تحتوي فقط على مصفوفة
السلام عليكم و رحمة الله و بركاته
أخي الكريم:
في المثال المرفق تم الحصول على المطلوب بعد تحميل الصفحة على القرص
كان الهدف جلب القيمة مباشرة دون الحاجة لحفظ الملف على القرص
لأن البرنامج يحدث القيمة بشكل مستمر خلال فترة قصيرة
وعليكم السلام ورحمة الله وبركاته
أهلا بك أخي الكريم , تم تعديل المثال .
(10-09-17, 01:28 PM)Ahmed_Mansoor كتب : [ -> ]وعليكم السلام ورحمة الله وبركاته
أهلا بك أخي الكريم , تم تعديل المثال .
جزاك الله خيرا أخي الكريم أحمد
كفيت و وفيت
ألف شكر
اخواني الكرام الفضول شدد علي بالمشاركة بالموضوع

اول شي انظرو لصورة التطبيق:
واجهة 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