طريقة عرض هذه المواضيع بهذا الشكل - ابو روضة - 30-07-18
السلام عليكم اخوتى
هناك موقع استشارات واريد جلب المواضيع منه بهذا الشكل بالصور اقصد والرابط ليتم وضعه
داخل المشروع بهذا الشكل ؟... وجزاكم الله كل خير
وهذا هو الموقع
RE: طريقة عرض هذه المواضيع بهذا الشكل - GameOver - 30-07-18
حرب هذا الكود، الفورم به 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
صراحة هذا الكود ليس لي، ولكن أكيد عدلت عليه بشكل بسيط، لانه نفس الفكرة التي طلبتها
قد يكون طريقة العرض لا تناسبك ولكن المهم الفكرة
RE: طريقة عرض هذه المواضيع بهذا الشكل - ابو روضة - 30-07-18
(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
صراحة هذا الكود ليس لي، ولكن أكيد عدلت عليه بشكل بسيط، لانه نفس الفكرة التي طلبتها
قد يكون طريقة العرض لا تناسبك ولكن المهم الفكرة
الحقيقة فكرة جميلة جدا ونجحت فعلا لكن مش بيجلب كل المواضيع بل فقط بيجلب خمس مواضيع
او ثمانية والصفحة اصلا مليئة بالصفحات....
هل هذه الفكرة تنفع مع اى موقع أم هذا فقط وشكرا لك كتير جدا
RE: طريقة عرض هذه المواضيع بهذا الشكل - GameOver - 30-07-18
اذا الموقع يستخدم نفس الاسلوب فقط تحتاج تغيير بعض المسميات من رابط واسماء مكونات الصفحة
بخصوص الصفحات لا اعرفها فليس لي اهتمام بهكذا مواضيع لهذا لم تتكون لدي الخبرة لعملها
RE: طريقة عرض هذه المواضيع بهذا الشكل - elgokr - 30-07-18
وعليكم السلام ورحمة الله وبركاته
حتى لا يروح ما قدمه الاخ GameOver
بدون اى جدوة ساضيف حاجة بسيطة فقط للاخ ابو روضة
حتى يعمل الكود كاملاً ويعرض جميع البيانات بالصفحة كما تريد
تتذكر موضوعك السابق بخصوص الضغط على زر المزيد
كل ما عليك فعله هو وضع كود الضغط على المزيد
فى بداية الزر لتنفيذ كود جلب محتوى الصفحة للاخ GameOver
بحيث عند الانتهاء ولم يعد يوجد كلمة المزيد
يقوم بتنفيذ كود الاخ GameOver مباشراً
انا لم اضع الكود لان سبق ووضحت الصورة لك اخى ابو روضة
واريد ان اري ستتمكن من فعل ما اقصده لوحدك ام انك حتى الان
لا تعلم كيفية استخدام الكود السابق مع الكود الحالى
مع انى اعلم جيداً انك ستتمكن من فعلها
سانتظر رؤية ردك والذى يحتوى على الكود كالماً بعد الانتهاء
حتى يعم الفائدة للجميع اذا كان احد يبحث بخصوص نفس الموضوع
وحتى ان لا تجعل ما قدمه الاخ GameOver ذهب بدون نفع
تحياتى لك
وتمنياتى لك التوفيق
RE: طريقة عرض هذه المواضيع بهذا الشكل - ابو روضة - 30-07-18
(30-07-18, 06:19 AM)elgokr كتب : وعليكم السلام ورحمة الله وبركاته
حتى لا يروح ما قدمه الاخ GameOver
بدون اى جدوة ساضيف حاجة بسيطة فقط للاخ ابو روضة
حتى يعمل الكود كاملاً ويعرض جميع البيانات بالصفحة كما تريد
تتذكر موضوعك السابق بخصوص الضغط على زر المزيد
كل ما عليك فعله هو وضع كود الضغط على المزيد
فى بداية الزر لتنفيذ كود جلب محتوى الصفحة للاخ GameOver
بحيث عند الانتهاء ولم يعد يوجد كلمة المزيد
يقوم بتنفيذ كود الاخ GameOver مباشراً
انا لم اضع الكود لان سبق ووضحت الصورة لك اخى ابو روضة
واريد ان اري ستتمكن من فعل ما اقصده لوحدك ام انك حتى الان
لا تعلم كيفية استخدام الكود السابق مع الكود الحالى
مع انى اعلم جيداً انك ستتمكن من فعلها
سانتظر رؤية ردك والذى يحتوى على الكود كالماً بعد الانتهاء
حتى يعم الفائدة للجميع اذا كان احد يبحث بخصوص نفس الموضوع
وحتى ان لا تجعل ما قدمه الاخ GameOver ذهب بدون نفع
تحياتى لك
وتمنياتى لك التوفيق
وهذا أول ما فكرت به فعلا اخى الجوكر وفضلت اجرب فيه بهذا الكود بعد ان وضعت الكود
الأول اللى فى موضوعى الذى أشرت عليه لكنه لم يفلح لآن هذا الزر لا يوجد به كلمة
لا يوجد مزيد فى النهاية مما جعلنى جعلته فارغ ايضا لم يعمل وكل اللى بيعمله بيفضل يعد
الى مالانهاية.
PHP كود :
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
RE: طريقة عرض هذه المواضيع بهذا الشكل - elgokr - 30-07-18
كل ما عليك اضافة التحقق التالى
كود :
If item.Style = "Display: none" Or item.Style = "display: none;" Then
Exit Do
End If
بدلاً من التحقق القديم اى اضف هذا التحقق اسفل
كود :
item.InvokeMember("Click")
وبكده سيعمل معك ويتم ايقاف العدد عند انتها واختفاء كلمة المزيد
تحياتى لك
وتمنياتى لك التوفيق
RE: طريقة عرض هذه المواضيع بهذا الشكل - ابو روضة - 30-07-18
(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")
وبكده سيعمل معك ويتم ايقاف العدد عند انتها واختفاء كلمة المزيد
تحياتى لك
وتمنياتى لك التوفيق
هههه والله ما عارف اقولك ايه ولا ايه يا فنان..
والله انت بجد حاجة تشرف وكأن الله وضعك للغلابة اللى مثلى ومثل الكثير..
سؤال اخير لو تكرمت استاذى هو ينفع الغى الرسالة التى تظهر وتقول الصفحة رقم كذا وكذا ؟
لآنها صراحة رخمة شويتين
RE: طريقة عرض هذه المواضيع بهذا الشكل - elgokr - 30-07-18
على ايه بس انا لم افعل شي بل انت ما فعلت كل شي
ويرجع الفضل الى الاخ GameOver
فيما قدمه لك من كود لعرض المجتوى كما فى الموقع
وبخصوص الرسالة بالطبع يمكنك
ولكن قد يسبب التهنيج بالبرنامج
بسبب تنفيذ الاوامر باجمعها فى اقل من ثانية
يمكن تغيير نص الرسالة الى مثلاً جالى تحميل
أو جلب جميع محتوى الصفحة وما شبه من رسالة
فكرة الرسالة هنا فقط هو توقف لثانية واحدة لاتمام الضغط على زر المزيد
بدلاً من ان تجد يقوم بالضغط عشارت المرات فى اقل من ثانية وقد تكون الصفحة لم تكتمل
وتجد بالنهاية ان البرنامج حدث له بعض التهنيج وبدلاً من ان يستغرض بالرسالة بعض الثواني
تجده بدون الرسالة مع التهنيج قد يصل الى دقائق وقد يصل انك تقوم باغلاق البرنامج
ويرجع ذلك الى حالة الجهاز
تحياتى لك
وتمنياتى لك التوفيق
RE: طريقة عرض هذه المواضيع بهذا الشكل - ابو روضة - 30-07-18
(30-07-18, 04:57 AM)GameOver كتب : اذا الموقع يستخدم نفس الاسلوب فقط تحتاج تغيير بعض المسميات من رابط واسماء مكونات الصفحة
بخصوص الصفحات لا اعرفها فليس لي اهتمام بهكذا مواضيع لهذا لم تتكون لدي الخبرة لعملها
تسلم أخى من كل شر وربنا يجزيك كل الخير يارب
(30-07-18, 03:05 PM)elgokr كتب : وبخصوص الرسالة بالطبع يمكنك
ولكن قد يسبب التهنيج بالبرنامج
بسبب تنفيذ الاوامر باجمعها فى اقل من ثانية
طيب اخى ممكن الكود الذى يلغى هذه الرسالة وهاجرب وهاحاول معاه الله يكرمك
وحاولت عمل هذا المشروع مثل اللى موجود فى هذا المووضوع لكن تعبت معاه جدا ومش لاقى حل له
والمشروع مرفق وسمحنى أخى
|