سبحان الله عملت مثال مصغر لكي تتضح الاشكالية لكن لا ادري هل عرفت الحل ام لا
المثال مرفق اختبار رابط واحد وهو يخص عدد النودز في الصفحة و آخر مشاركة المشارك لا يساوي من قبله من حيث عنوان الوصول الى خاصية الـInnertext لاسمه.
فلا ادري هل ستقع اخطاء ان انا نقلته الى المشروع الرئيسي
و من لا يود تحميل المثال البسيط التالي الكلاس كامل:
كود :
Imports System.Threading
Public Class Form1
Dim th As Thread
Dim doc As New HtmlAgilityPack.HtmlDocument
Sub get_nods(url As String)
Dim html As String = IO.File.ReadAllText(url)
doc.LoadHtml(html)
Dim posts As HtmlAgilityPack.HtmlNodeCollection = doc.DocumentNode.SelectNodes("//div[@class='post classic ']")
Dim post As HtmlAgilityPack.HtmlNode = Nothing
Dim userinfo As HtmlAgilityPack.HtmlNode = Nothing
Dim attachs As HtmlAgilityPack.HtmlNodeCollection = Nothing
Dim x As Integer
ProgressBar1.Invoke(Sub() ProgressBar1.Maximum = posts.Count - 1)
For x = 0 To posts.Count - 1
Label1.Invoke(Sub() Label1.Text = "")
Label2.Invoke(Sub() Label2.Text = "")
Label3.Invoke(Sub() Label3.Text = "")
ProgressBar1.Invoke(Sub() ProgressBar1.Value = x)
userinfo = posts(x).SelectNodes("//div[@class='author_information']")(x)
post = posts(x).SelectNodes("//div[@class='post_body scaleimages']")(x)
If Not IsNothing(posts(x).SelectNodes("//fieldset//a[@class='attachembed']")) Then
attachs = posts(x).SelectNodes("//fieldset//a[@class='attachembed']")
End If
Label1.Invoke(Sub() Label1.Text = "Main_Post: " & vbNewLine & userinfo.InnerText)
Label2.Invoke(Sub() Label2.Text = "Main_Post: " & vbNewLine & post.InnerText)
If Not IsNothing(attachs) Then
Label3.Invoke(Sub() Label3.Text = "Main_Post: " & vbNewLine & "Attachs Count: " & attachs.Count)
Else
Label3.Invoke(Sub() Label3.Text = "Main_Post: " & vbNewLine & "Attachs Count: 0")
End If
Thread.Sleep(2500)
Next
Button1.Invoke(Sub() Button1.Enabled = True)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim url As String = "E:/vb4arb/thread-10000.html"
th = New Thread(AddressOf get_nods)
Button1.Enabled = False
Label1.Text = "بدأ"
th.Start(url)
End Sub
End Class
الكود الاول اللذي استخدمه للوصول لاسم العضو او المستخدم:
كود :
"//div[@class='post_author scaleimages']//div[2]//a"
فهل الكود الجديد في هذه المشاركة هو الافضل ام لا؟
على كل حال ساجرب باذن الله
انا احتاج وقت طويل لكي اعرف الخطأ.
اسف على الاطالة
حفظكم الله تعالى