تمت الإجابة جلب كامل الصفحة

تم تحميل الصفحة في 0,4591512 ثانية
جلب كامل الصفحة
الحالة
مغلق و غير مفتوح للمزيد من الردود.

ابو روضة

.:: إداري النقطة العامة ::.
rankrankrankrankrankrank
إنضم
28 أكتوبر 2012
المشاركات
4,367
الإعجابات
5,426
النقاط
223
الإقامة
القاهرة
السلام عليكم إخوتى
قمت بفضل الله بجلب هذه الصفحات من هذا الموقع

قصص أطفال أجمل القصص من أجل إسعاد طفلك قبل النوم
بال HtmlAgilityPack

لكن المشكلة ان الصفحة بها مائة موضوع وهذا الكود يجلب فقط اول 10 مواضيع
فكيف أجلب كل المواضيع التى بالصفحة الله يبارك فيكم..
الكود

C#:
Dim url As String = "https://www.storiesrealistic.com/category/قصص-اطفال/"
       Dim wc As New WebClient
       wc.Encoding = Encoding.UTF8
       Dim html As String = wc.DownloadString(url)
       Dim doc As New HtmlAgilityPack.HtmlDocument
       doc.LoadHtml(html)
       For Each n As HtmlAgilityPack.HtmlNode In doc.DocumentNode.SelectNodes("//h2[@class='entry-title']/a")
           ListBox2.Items.Add(n.InnerText)
           lst.Add(n.Attributes("href").Value)

           Me.Text = ListBox2.Items.Count
       Next
 
إنضم
21 سبتمبر 2017
المشاركات
51
الإعجابات
76
النقاط
23
وعليكم السلام

يجب الانتقال للصفحة التالية (مشاهدة المزيد)





C#:
Try
            For i As Integer = 1 To NumericUpDown1.Value
                Dim url As String = ("https://www.storiesrealistic.com/category/%D9%82%D8%B5%D8%B5-%D8%A7%D8%B7%D9%81%D8%A7%D9%84/page/" & i)
                Dim wc As New WebClient
                wc.Encoding = Encoding.UTF8
                Dim html As String = wc.DownloadString(url)
                Dim doc As New HtmlAgilityPack.HtmlDocument
                doc.LoadHtml(html)

                For Each n As HtmlAgilityPack.HtmlNode In doc.DocumentNode.SelectNodes("//h2[@class='entry-title']/a")
                    ListBox1.Items.Add(n.InnerText)
                    TextBox1.Text = ListBox1.Items.Count
                Next
            Next
        Catch ex As Exception
        End Try
 

ابو روضة

.:: إداري النقطة العامة ::.
rankrankrankrankrankrank
إنضم
28 أكتوبر 2012
المشاركات
4,367
الإعجابات
5,426
النقاط
223
الإقامة
القاهرة
وعليكم السلام

يجب الانتقال للصفحة التالية (مشاهدة المزيد)





C#:
Try
            For i As Integer = 1 To NumericUpDown1.Value
                Dim url As String = ("https://www.storiesrealistic.com/category/%D9%82%D8%B5%D8%B5-%D8%A7%D8%B7%D9%81%D8%A7%D9%84/page/" & i)
                Dim wc As New WebClient
                wc.Encoding = Encoding.UTF8
                Dim html As String = wc.DownloadString(url)
                Dim doc As New HtmlAgilityPack.HtmlDocument
                doc.LoadHtml(html)

                For Each n As HtmlAgilityPack.HtmlNode In doc.DocumentNode.SelectNodes("//h2[@class='entry-title']/a")
                    ListBox1.Items.Add(n.InnerText)
                    TextBox1.Text = ListBox1.Items.Count
                Next
            Next
        Catch ex As Exception
        End Try
صراحة ماشاء الله عليك والله لك لمسات ابداعية لا توصف " حقيقة "
موضوع كان مغلبنى كتير جدا..

لكن هل هذه الطريقة تنفع مع اى موقع أم هذا الموقع فقط ؟
طبعا مع اختيارك أفضل إجابة
 

Spawner Freezo

.:: مُساعد مُشرف أقسام البرمجة ::.
rankrank
إنضم
12 أبريل 2015
المشاركات
355
الإعجابات
533
النقاط
93
العمر
22
الإقامة
Morocco
صراحة ماشاء الله عليك والله لك لمسات ابداعية لا توصف " حقيقة "
موضوع كان مغلبنى كتير جدا..

لكن هل هذه الطريقة تنفع مع اى موقع أم هذا الموقع فقط ؟
طبعا مع اختيارك أفضل إجابة

بطبع على حسب الموقع،



إذا كان يعتمد على نفس المنهجية أي بستعمال ( /page path ) -> /page فهذا الكود سيقوم بالأمر )

كتبت لك مثال ب-C#، شوف أيضاً ال-parameters وراح تفهم.

C#:
        private async void GetTitles (  string url,
                                        string XPATHMaxPages = "//a[@class='page-numbers'][2]",
                                        string XPATHTitles = "//h2[@class='entry-title']"
        )
        {
            var web = new HtmlWeb() { OverrideEncoding = Encoding.UTF8 };

            async Task<HtmlAgilityPack.HtmlDocument> downloadPage ( string _url, int _page )
            {
                return await web.LoadFromWebAsync( $"{_url}/page/{Convert.ToString( _page )}" );
            }

            var dPage = await downloadPage( url, _page: 0 );

            var maxPages = dPage.DocumentNode.SelectSingleNode( XPATHMaxPages ).InnerText;
            // 'Debug : label1.Text = maxPages;

            for (int count = 0 ; count <= Convert.ToInt16( maxPages ) ; count++)
            {
                var getTitles = (await downloadPage( url, _page: count ))
                                        .DocumentNode.SelectNodes( XPATHTitles )
                                        .Select( @o => @o.InnerText )
                                        .ToList();

                getTitles.ForEach( @o => listBox1.Items.Add( @o ) );
            }
        }
الإستعمال :

C#:
GetTitles( "https://www.storiesrealistic.com/category/قصص-اطفال" );
بالتوفيق
 

ابو روضة

.:: إداري النقطة العامة ::.
rankrankrankrankrankrank
إنضم
28 أكتوبر 2012
المشاركات
4,367
الإعجابات
5,426
النقاط
223
الإقامة
القاهرة
بطبع على حسب الموقع،



إذا كان يعتمد على نفس المنهجية أي بستعمال ( /page path ) -> /page فهذا الكود سيقوم بالأمر )

كتبت لك مثال ب-C#، شوف أيضاً ال-parameters وراح تفهم.

C#:
        private async void GetTitles (  string url,
                                        string XPATHMaxPages = "//a[@class='page-numbers'][2]",
                                        string XPATHTitles = "//h2[@class='entry-title']"
        )
        {
            var web = new HtmlWeb() { OverrideEncoding = Encoding.UTF8 };

            async Task<HtmlAgilityPack.HtmlDocument> downloadPage ( string _url, int _page )
            {
                return await web.LoadFromWebAsync( $"{_url}/page/{Convert.ToString( _page )}" );
            }

            var dPage = await downloadPage( url, _page: 0 );

            var maxPages = dPage.DocumentNode.SelectSingleNode( XPATHMaxPages ).InnerText;
            // 'Debug : label1.Text = maxPages;

            for (int count = 0 ; count <= Convert.ToInt16( maxPages ) ; count++)
            {
                var getTitles = (await downloadPage( url, _page: count ))
                                        .DocumentNode.SelectNodes( XPATHTitles )
                                        .Select( @o => @o.InnerText )
                                        .ToList();

                getTitles.ForEach( @o => listBox1.Items.Add( @o ) );
            }
        }
الإستعمال :

C#:
GetTitles( "https://www.storiesrealistic.com/category/قصص-اطفال" );
بالتوفيق
الله يسعد قلبك أخى ويبارك بعمرك يارب...
لو تسمح ممكن هذا الكود بالدوت نت وعلى فكرة أنا متابع ردودك كلها وماشاء الله
والله أكبر عليك " ربنا يحفظك ويزيدك علماً "
 

Spawner Freezo

.:: مُساعد مُشرف أقسام البرمجة ::.
rankrank
إنضم
12 أبريل 2015
المشاركات
355
الإعجابات
533
النقاط
93
العمر
22
الإقامة
Morocco
العفو أخي



-----



صراحة VB.NET وجع راس ههه



على ماأعتقد لا توجد طريقة لعمل Local function في VB.NET، قمت بوضع Local func مستقلة



كود:
Private Async Sub GetTitles(ByVal url As String, Optional ByVal XPATHMaxPages As String = "//a[@class='page-numbers'][2]", Optional ByVal XPATHTitles As String = "//h2[@class='entry-title']")

        ' We will use HtmlWeb to obtain the HTML document
        ' UTF8 for Arabic characters
        Dim web = New HtmlWeb() With {.OverrideEncoding = Encoding.UTF8}

        ' Get how many pages we have.
        Dim dPage = Await downloadPage(web, url, _page:=0)
        Dim maxPages = dPage.DocumentNode.SelectSingleNode(XPATHMaxPages).InnerText

        ' DEBUG : label1.Text = maxPages;

        ' Let's make a loop on all the pages.
        Dim count As Integer = 0
        Do While count <= Convert.ToInt16(maxPages)

            Dim getTitles_Renamed = (Await downloadPage(web, url, _page:=count)).DocumentNode.SelectNodes(XPATHTitles).Select(Function(o) o.InnerText).ToList()
            
            ' Let's add all the titles found to the listbox
            getTitles_Renamed.ForEach(Function(o) ListBox1.Items.Add(o))
            count += 1
        Loop
    End Sub

    Private Async Function downloadPage(ByVal Web As HtmlWeb, ByVal _url As String, ByVal _page As Integer) As Task(Of HtmlAgilityPack.HtmlDocument)
        ' Let's use the LoadFromWebAsync implemented method of our module.
        Return Await Web.LoadFromWebAsync($"{_url}/page/{Convert.ToString(_page)}")
    End Function
----


كود:
        GetTitles("https://www.storiesrealistic.com/category/قصص-اطفال")
 

ابو روضة

.:: إداري النقطة العامة ::.
rankrankrankrankrankrank
إنضم
28 أكتوبر 2012
المشاركات
4,367
الإعجابات
5,426
النقاط
223
الإقامة
القاهرة
العفو أخي



-----



صراحة VB.NET وجع راس ههه



على ماأعتقد لا توجد طريقة لعمل Local function في VB.NET، قمت بوضع Local func مستقلة



كود:
Private Async Sub GetTitles(ByVal url As String, Optional ByVal XPATHMaxPages As String = "//a[@class='page-numbers'][2]", Optional ByVal XPATHTitles As String = "//h2[@class='entry-title']")

        ' We will use HtmlWeb to obtain the HTML document
        ' UTF8 for Arabic characters
        Dim web = New HtmlWeb() With {.OverrideEncoding = Encoding.UTF8}

        ' Get how many pages we have.
        Dim dPage = Await downloadPage(web, url, _page:=0)
        Dim maxPages = dPage.DocumentNode.SelectSingleNode(XPATHMaxPages).InnerText

        ' DEBUG : label1.Text = maxPages;

        ' Let's make a loop on all the pages.
        Dim count As Integer = 0
        Do While count <= Convert.ToInt16(maxPages)

            Dim getTitles_Renamed = (Await downloadPage(web, url, _page:=count)).DocumentNode.SelectNodes(XPATHTitles).Select(Function(o) o.InnerText).ToList()
           
            ' Let's add all the titles found to the listbox
            getTitles_Renamed.ForEach(Function(o) ListBox1.Items.Add(o))
            count += 1
        Loop
    End Sub

    Private Async Function downloadPage(ByVal Web As HtmlWeb, ByVal _url As String, ByVal _page As Integer) As Task(Of HtmlAgilityPack.HtmlDocument)
        ' Let's use the LoadFromWebAsync implemented method of our module.
        Return Await Web.LoadFromWebAsync($"{_url}/page/{Convert.ToString(_page)}")
    End Function
----


كود:
        GetTitles("https://www.storiesrealistic.com/category/قصص-اطفال")
ولا يهمك أخى الكريم يكفى تجاوبك فقط مع الجميع وعدم بخلك بأى معلومة...
الكود لم ينفع والاخ
0xdeath أعطانى حل للموضوع لكن قولت كما نقول زيادة الخير خيرين ههه
جزاك الله كل خير أخى العزيز
 
الحالة
مغلق و غير مفتوح للمزيد من الردود.

الأعضاء النشطين حاليآ الذين يشاهدون هذا الموضوع (1 عضو و 0 ضيف)

خيارات الاستايل

نوع الخط
مودك
اخفاء السايدر بار OFF
توسيط المنتدى OFF
فصل الأقسام OFF
الأقسام الفرعية OFF
عرض المشاركات
حجم الخط
معلومات العضو OFF
إخفاء التوقيع OFF

إرجاع خيارات الإستايل