السلام عليكم
اريد طريقة لجلب رابط من الصفحة هذه : http://app.live-plus.info/api/channels
هناك عدة روابط في هذه الصفحة كيف بامكاني جلب رابط واحد منهم من يملك الفكرة يرسلها لي وانا سوف افهم من الفكرة وانفذها
(23-12-20, 08:57 AM)alfaiz678 كتب : [ -> ] (23-12-20, 01:58 AM)MaxXx كتب : [ -> ]السلام عليكم
اريد طريقة لجلب رابط من الصفحة هذه : http://app.live-plus.info/api/channels
هناك عدة روابط في هذه الصفحة كيف بامكاني جلب رابط واحد منهم من يملك الفكرة يرسلها لي وانا سوف افهم من الفكرة وانفذها
شكرا لك ولكني اريد الطريقة بدون استعمال webbrowser
(25-12-20, 03:04 PM)alfaiz678 كتب : [ -> ] (25-12-20, 02:07 PM)MaxXx كتب : [ -> ]up up up up
اظن هذه ستفي بالغرض
كود :
Public Function ExtractLinks(ByVal url As String) As DataTable
Dim dt As New DataTable
dt.Columns.Add("LinkText")
dt.Columns.Add("LinkUrl")
Dim wc As New WebClient
Dim html As String = wc.DownloadString(url)
Dim links As MatchCollection = Regex.Matches(html, "<a.*?href=""(.*?)"".*?>(.*?)</a>")
For Each match As Match In links
Dim dr As DataRow = dt.NewRow
Dim matchUrl As String = match.Groups(1).Value
'Ignore all anchor links
If matchUrl.StartsWith("#") Then
Continue For
End If
'Ignore all javascript calls
If matchUrl.ToLower.StartsWith("javascript:") Then
Continue For
End If
'Ignore all email links
If matchUrl.ToLower.StartsWith("mailto:") Then
Continue For
End If
'For internal links, build the url mapped to the base address
If Not matchUrl.StartsWith("http://") And Not matchUrl.StartsWith("https://") Then
matchUrl = MapUrl(url, matchUrl)
End If
'Add the link data to datatable
dr("LinkUrl") = matchUrl
dr("LinkText") = match.Groups(2).Value
dt.Rows.Add(dr)
Next
Return dt
End Function
Public Function MapUrl(ByVal baseAddress As String, ByVal relativePath As String) As String
Dim u As New System.Uri(baseAddress)
If relativePath = "./" Then
relativePath = "/"
End If
If relativePath.StartsWith("/") Then
Return u.Scheme + Uri.SchemeDelimiter + u.Authority + relativePath
Else
Dim pathAndQuery As String = u.AbsolutePath
' If the baseAddress contains a file name, like ..../Something.aspx
' Trim off the file name
pathAndQuery = pathAndQuery.Split("?")(0).TrimEnd("/")
If pathAndQuery.Split("/")(pathAndQuery.Split("/").Count - 1).Contains(".") Then
pathAndQuery = pathAndQuery.Substring(0, pathAndQuery.LastIndexOf("/"))
End If
baseAddress = u.Scheme + Uri.SchemeDelimiter + u.Authority + pathAndQuery
'If the relativePath contains ../ then
' adjust the baseAddress accordingly
While relativePath.StartsWith("../")
relativePath = relativePath.Substring(3)
If baseAddress.LastIndexOf("/") > baseAddress.IndexOf("//" + 2) Then
baseAddress = baseAddress.Substring(0, baseAddress.LastIndexOf("/")).TrimEnd("/")
End If
End While
Return baseAddress + "/" + relativePath
End If
End Function
شكرا لك ولكني لم استطع استخدامه انت اعطيتني function فقط كيف استعمله هل ممكن ولو مشروع بسيط اخي من فضلك
واللي فهمته من الكود انه يقوم باستخراج جميع الروابط انا اريد استخراج رابط واحد فقط
لقد وجدت هذا الموضوع
http://vb4arb.com/vb/showthread.php?tid=36742
ولكني للاسف لم استطع تطبيقه انا اريد مثل هذه الفكرة
هل بالامكان ذلك
وعليك السلام ورحمة الله وبركاته
با اخي العزيز.
القيت نظرة على الكود الذي اعطاك اياه اخونا
alfaiz678 جزاه الله خير
ورغم اني لم اقم بتجربته لكني اجزم انه هو ماتريد بالضبط
لكن اين المشكلة هنا؟
المشكلة انك لم تجرب الكود بل ايضا يبدو انك لاتعرف طريقة استخدامه .
لذا خذ مني نصيحة هي ان تحاول تبسط الاشياء يعني انت تريد كود يجلب الروابط من الانترنت
واشترطت انك لاتريد سوى رابط واحد
الان كل ماعليك فعله في الكود هو ان تخرج من الحلقة اذا استخرجت الرابط الذي تريده
ولنفترض انك تريد هذا الرابط :http://www.microsoft.com/vs2020download
ولكي تحصل عليه لابد ان تقوم بمراجعة الروابط ثم فرزها بحسب الشروط التي تريدها
والكود يحتوي على حلقة دوران for تدور على كل الروابط وهنا يجب عليك ان تتاكد من كل رابط في الحلقة
هل هو نفس الرابط الذي تريده ؟ اذا نعم احفظ الرابط في متغير واخرج من الحلقة واذا لا استمر في الدوران على بقية الروابط
وهكذا اذا كان الموقع فعلا يحتوي على الرابط الذي تريده فسوف تجده حتما اثناء دوران الحلقة
اليك هذا المثال البسيط
افتح مشروع جديد وضع على الفورم صندوق نص وسمه rtxt وضع ايضا زر
الان افتح محرر الكود والصق الكود التالي
PHP كود :
Imports System.Net
Imports System.Text.RegularExpressions
Public Class Form1
Dim WithEvents wc As New WebClient
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim url As String = "https://marketplace.visualstudio.com/"
wc.DownloadStringAsync(New Uri(url))
End Sub
Private Sub wc_DownloadStringCompleted(sender As Object, e As System.Net.DownloadStringCompletedEventArgs) Handles wc.DownloadStringCompleted
Dim pattern As String = "(?:(?:https?|ftp):\/\/|\b(?:[a-z\d]+\.))(?:(?:[^\s()<>]+|\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))?\))+(?:\((?:[^\s()<>]+|(?:\(?:[^\s()<>]+\)))?\)|[^\s`!()\[\]{};:'"".,<>?«»""‘’]))?"
Dim mx As Match
For Each mx In Regex.Matches(e.Result, pattern, RegexOptions.Multiline + RegexOptions.Compiled)
rtxt.AppendText(mx.Value & vbNewLine)
Next
End Sub
End Class
عند الضغط على الزر تقوم الاداة wc وهي من فئة webclient بتحميل شفرة الموقع
وعند اكتمال تحميل الشفرة وضعت حلقة دوران تتحقق او تبحث عن الروابط ضمن شفرة الموقع
التي تم تحميلها وكل رابط يوجد في شفرة الموقع سيتم اضافته الى صندوق النص rtxt
يبقى عليك فقط ان تتحقق من كل رابط فيما اذا كان هو الرابط المطلوب
وسلااااام عليك خيووو
بالتوفيق