30-07-18, 12:03 AM
السلام عليكم اخوتى
هناك موقع استشارات واريد جلب المواضيع منه بهذا الشكل بالصور اقصد والرابط ليتم وضعه
داخل المشروع بهذا الشكل ؟... وجزاكم الله كل خير
وهذا هو الموقع
Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
WebBrowser1.Navigate("https://www.amrkhaled.net/Category/26/استشارات")
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim flow As New FlowLayoutPanel
flow.Parent = Me
flow.Dock = DockStyle.Fill
flow.AutoScroll = True
For Each element As HtmlElement In WebBrowser1.Document.GetElementsByTagName("div")
If element.GetAttribute("className").Contains("tagsNsearch-block lastid FunctionParm") Then
Dim txt As String = element.InnerText.Trim
Dim htm As String = element.OuterHtml
Dim index1 As Integer = htm.IndexOf("<img class=""img-fluid lazy loaded"" src=""")
Dim img As String = htm.Substring(index1 + 40, htm.IndexOf("""", index1 + 40) - (index1 + 40))
Dim index2 As Integer = htm.IndexOf("<a class=""headline d-block w-100"" href=""")
Dim lnk As String = htm.Substring(index2 + 40, htm.IndexOf("""", index2 + 40) - (index2 + 40))
Dim pnl As New Panel
pnl.Parent = flow
pnl.Size = New Size(220, 222)
pnl.BackColor = Color.White
pnl.BorderStyle = BorderStyle.FixedSingle
pnl.RightToLeft = Windows.Forms.RightToLeft.Yes
Dim pct As New PictureBox
pct.Parent = pnl
pct.Size = New Size(220, 147)
pct.SizeMode = PictureBoxSizeMode.Zoom
pct.ImageLocation = img
Dim lbl As New LinkLabel
lbl.Parent = pnl
lbl.Size = New Size(220, 75)
lbl.AutoSize = False
lbl.TextAlign = ContentAlignment.MiddleLeft
lbl.LinkBehavior = LinkBehavior.NeverUnderline
lbl.Top = 148
lbl.Text = txt
lbl.Tag = "https://www.amrkhaled.net/" & lnk
AddHandler lbl.LinkClicked, AddressOf lbl_LinkClicked
End If
Next
flow.BringToFront()
Me.WindowState = FormWindowState.Maximized
End Sub
Private Sub lbl_LinkClicked(sender As System.Object, e As LinkLabelLinkClickedEventArgs)
Dim link As String = sender.Tag
MsgBox(link)
Process.Start(link)
End Sub
End Class(30-07-18, 02:55 AM)GameOver كتب : [ -> ]حرب هذا الكود، الفورم به WebBrowser و Button وبعد التشغيل انتظر حتى اكتمال الصفحة ثم اضغط الButton
كود :
Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
WebBrowser1.Navigate("https://www.amrkhaled.net/Category/26/استشارات")
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim flow As New FlowLayoutPanel
flow.Parent = Me
flow.Dock = DockStyle.Fill
flow.AutoScroll = True
For Each element As HtmlElement In WebBrowser1.Document.GetElementsByTagName("div")
If element.GetAttribute("className").Contains("tagsNsearch-block lastid FunctionParm") Then
Dim txt As String = element.InnerText.Trim
Dim htm As String = element.OuterHtml
Dim index1 As Integer = htm.IndexOf("<img class=""img-fluid lazy loaded"" src=""")
Dim img As String = htm.Substring(index1 + 40, htm.IndexOf("""", index1 + 40) - (index1 + 40))
Dim index2 As Integer = htm.IndexOf("<a class=""headline d-block w-100"" href=""")
Dim lnk As String = htm.Substring(index2 + 40, htm.IndexOf("""", index2 + 40) - (index2 + 40))
Dim pnl As New Panel
pnl.Parent = flow
pnl.Size = New Size(220, 222)
pnl.BackColor = Color.White
pnl.BorderStyle = BorderStyle.FixedSingle
pnl.RightToLeft = Windows.Forms.RightToLeft.Yes
Dim pct As New PictureBox
pct.Parent = pnl
pct.Size = New Size(220, 147)
pct.SizeMode = PictureBoxSizeMode.Zoom
pct.ImageLocation = img
Dim lbl As New LinkLabel
lbl.Parent = pnl
lbl.Size = New Size(220, 75)
lbl.AutoSize = False
lbl.TextAlign = ContentAlignment.MiddleLeft
lbl.LinkBehavior = LinkBehavior.NeverUnderline
lbl.Top = 148
lbl.Text = txt
lbl.Tag = "https://www.amrkhaled.net/" & lnk
AddHandler lbl.LinkClicked, AddressOf lbl_LinkClicked
End If
Next
flow.BringToFront()
Me.WindowState = FormWindowState.Maximized
End Sub
Private Sub lbl_LinkClicked(sender As System.Object, e As LinkLabelLinkClickedEventArgs)
Dim link As String = sender.Tag
MsgBox(link)
Process.Start(link)
End Sub
End Class
صراحة هذا الكود ليس لي، ولكن أكيد عدلت عليه بشكل بسيط، لانه نفس الفكرة التي طلبتها
قد يكون طريقة العرض لا تناسبك ولكن المهم الفكرة
(30-07-18, 06:19 AM)elgokr كتب : [ -> ]وعليكم السلام ورحمة الله وبركاته
حتى لا يروح ما قدمه الاخ GameOverبدون اى جدوة ساضيف حاجة بسيطة فقط للاخ ابو روضة
حتى يعمل الكود كاملاً ويعرض جميع البيانات بالصفحة كما تريدتتذكر موضوعك السابق بخصوص الضغط على زر المزيد
كل ما عليك فعله هو وضع كود الضغط على المزيدفى بداية الزر لتنفيذ كود جلب محتوى الصفحة للاخ GameOver
بحيث عند الانتهاء ولم يعد يوجد كلمة المزيديقوم بتنفيذ كود الاخ GameOver مباشراً
انا لم اضع الكود لان سبق ووضحت الصورة لك اخى ابو روضةواريد ان اري ستتمكن من فعل ما اقصده لوحدك ام انك حتى الانلا تعلم كيفية استخدام الكود السابق مع الكود الحالىمع انى اعلم جيداً انك ستتمكن من فعلها
سانتظر رؤية ردك والذى يحتوى على الكود كالماً بعد الانتهاءحتى يعم الفائدة للجميع اذا كان احد يبحث بخصوص نفس الموضوع
وحتى ان لا تجعل ما قدمه الاخ GameOver ذهب بدون نفع
تحياتى لكوتمنياتى لك التوفيق
Dim input As HtmlElementCollection
input = WebBrowser1.Document.GetElementsByTagName("button")
Dim ii As Integer
For Each item As HtmlElement In input
If item.InnerText = ("المزيد") Then
item.InvokeMember("Click")
Do
item.InvokeMember("Click")
If item.InnerText = ("") Then
Exit Do
End If
On Error Resume Next
Dim t As New Threading.Thread(AddressOf closeMsgbox)
t.Start(1) '1 = 1 second
ii += 1
MsgBox("الصفحة رقم " & ii)
Loop
End If
Next item
If item.Style = "Display: none" Or item.Style = "display: none;" Then
Exit Do
End Ifitem.InvokeMember("Click")(30-07-18, 02:42 PM)elgokr كتب : [ -> ]كل ما عليك اضافة التحقق التالى
كود :
If item.Style = "Display: none" Or item.Style = "display: none;" Then
Exit Do
End If
بدلاً من التحقق القديم اى اضف هذا التحقق اسفل
كود :
item.InvokeMember("Click")
وبكده سيعمل معك ويتم ايقاف العدد عند انتها واختفاء كلمة المزيد
تحياتى لكوتمنياتى لك التوفيق
(30-07-18, 04:57 AM)GameOver كتب : [ -> ]اذا الموقع يستخدم نفس الاسلوب فقط تحتاج تغيير بعض المسميات من رابط واسماء مكونات الصفحة
بخصوص الصفحات لا اعرفها فليس لي اهتمام بهكذا مواضيع لهذا لم تتكون لدي الخبرة لعملها
(30-07-18, 03:05 PM)elgokr كتب : [ -> ]وبخصوص الرسالة بالطبع يمكنكولكن قد يسبب التهنيج بالبرنامجبسبب تنفيذ الاوامر باجمعها فى اقل من ثانية