Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 14.10.2019
Сообщений: 54

Получить все сериалы из N страниц html документа

13.12.2019, 07:40. Показов 1648. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Продолжая развивать тему скрапа страниц из темы «Получить данные из html странички» у меня получилось спарсить html страницу вытянуть что мне было нужно но не в полном объеме, подскажите как мне получить инфу из N страниц документа.
КОД:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
using HtmlAgilityPack;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace htmlagilitypackDemo
{
    class Program
    {
        static void Main()
        {
            List<string> staticInfoRightSmotr = new List<string>(); // Просмотры сериалов
            List<string> shortStoryHead = new List<string>(); // Русскоязычное название сериала Фулл название сериала, Ребята-чирлидеры!
            List<string> tempHead = new List<string>(); // Фулл название сериала, Ребята-чирлидеры! / Cheer Danshi! [1-4 из 12+]
 
            string[] URL = new string[6] {
                "https://web.archive.org/web/20140207223054/http://animevost.org/", // 2014
                "https://web.archive.org/web/20150928012759/http://animevost.org:80/", // 2015
                "https://web.archive.org/web/20160307084952/http://animevost.org/", // 2016
                "https://web.archive.org/web/20170418030454/http://www.animevost.org:80/", // 2017
                "https://web.archive.org/web/20180430213640/http://animevost.org/", // 2018
                "https://web.archive.org/web/20190504202340/http://animevost.org/", // 2019
            };
 
            HtmlWeb web = new HtmlWeb();
 
            HtmlDocument document = web.Load(URL[0]);
 
            Console.WriteLine("{0,-5} {1,-55} {2,-15}", "#", "Наименование", "Просмотры:\n");
 
            // Получить все названия сериалов на странице
            HtmlNode[] staticInfoRightSmotrNodes = document.DocumentNode.SelectNodes("//*[@id='dle-content']/div/div[2]/div[2]/span[1]").ToArray();
            foreach (HtmlNode item in staticInfoRightSmotrNodes)
            {
                staticInfoRightSmotr.Add(item.InnerText);                
            }
 
            // Получить все просмотры сериалов на странице
            HtmlNode[] tempHeadNodes = document.DocumentNode.SelectNodes("//*[@id='dle-content']/div/div[1]/h2/a").ToArray();
            foreach (HtmlNode item in tempHeadNodes)
            {
                tempHead.Add(item.InnerText);
            }
 
            int count = 0;
            for (int i = 0; i < tempHead.Count; i++)
            {
                count++;
                string temp = tempHead[i];
                string second_word = temp.Remove(temp.IndexOf('/'), temp.Length - temp.IndexOf('/'));
                shortStoryHead.Add(second_word);
                Console.WriteLine("{0,-5} {1,-55} {2,-15}", count, shortStoryHead[i], staticInfoRightSmotr[i]);
            }
 
            Console.ReadKey(true);
        }
    }
}

пока только получается вытянуть 10 элементов с 1 страницы...

Было бы классно если бы какие нибудь статьи или примеры посмотреть, спасибо)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.12.2019, 07:40
Ответы с готовыми решениями:

Получить данные печатающегося документа - имя документа и число страниц
Нужно дописать дополнение, схема состоит в чём: открываем простой word документ и ставим на печать, все данные о печатающих документах...

Получить текст из документа HTML
Всем добрый день!!! Подскажите как получить текст из документа html. В документе он начинается с тега &lt;p&gt;. Допустим если на входе...

Получить массив параграфов документа html
Добрый день! Нужно получить массив праграфов из документа Html средствами c#. Как это сделать?

4
 Аватар для Voronkin
469 / 296 / 166
Регистрация: 18.03.2018
Сообщений: 960
13.12.2019, 13:09
Лучший ответ Сообщение было отмечено hikkathon как решение

Решение

У тебя есть https://animevost.org/page/1/

Перебирай страницы, пока она возвращает значения. Перестала возвращать - значит дальше страниц нет.

Сейчас не могу проверить, но по ощущению, нужно поставить в цикл
C#
1
 HtmlDocument document = web.Load(URL[0])
в виде
C#
1
HtmlDocument document = web.Load(URL[0]+"/page/"+ i /*Элемент цикла*/)
0
1 / 1 / 0
Регистрация: 14.10.2019
Сообщений: 54
14.12.2019, 14:37  [ТС]
Voronkin, Спасибо за совет, разобрался)
Не подскажешь как обработать ошибку если он не находит нужный НОД то ставит значение в "0", это касается столбцов просмотры...

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
using HtmlAgilityPack;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace htmlagilitypackDemo
{
    class Program
    {
        static void Main()
        {
            List<string> staticInfoRightSmotr = new List<string>(); // Просмотры сериалов
            List<string> shortStoryHead = new List<string>(); // Русскоязычное название сериала Фулл название сериала, Ребята-чирлидеры!
            List<string> tempHead = new List<string>(); // Фулл название сериала, Ребята-чирлидеры! / Cheer Danshi! [1-4 из 12+]
            List<string> pageURL = new List<string>(); // URL страниц
 
            string BaseURL = "https://web.archive.org/web/20140207223054/http://animevost.org:80/";
            string Page = "page/";
            int PageNumber = 0;
 
            string[] URL = new string[6]
            {
                "https://web.archive.org/web/20140207223054/http://animevost.org:80/", // 2014
                "https://web.archive.org/web/20150928012759/http://animevost.org:80/", // 2015
                "https://web.archive.org/web/20160307084952/http://animevost.org:80/", // 2016
                "https://web.archive.org/web/20170418030454/http://www.animevost.org:80/", // 2017
                "https://web.archive.org/web/20180430213640/http://animevost.org:80/", // 2018
                "https://web.archive.org/web/20190504202340/http://animevost.org:80/", // 2019
            };
 
            HtmlWeb web = new HtmlWeb();
 
            Console.Write("LOAD PAGE:\n");
 
            for (int i = 0; i < 68; i++)
            {
                PageNumber++;
                Console.Write(PageNumber);
                HtmlDocument document = web.Load(BaseURL + Page + PageNumber + "/");
                //HtmlDocument document = web.Load(URL[i]);
                try
                {
                    // Получить все названия сериалов на странице
                    HtmlNode[] staticInfoRightSmotrNodes = document.DocumentNode.SelectNodes("//*[@id='dle-content']/div/div[2]/div[2]/span[1]").ToArray();
                    foreach (HtmlNode item in staticInfoRightSmotrNodes)
                    {
                        staticInfoRightSmotr.Add(item.InnerText);
                    }
                    // Получить все просмотры сериалов на странице
                    HtmlNode[] tempHeadNodes = document.DocumentNode.SelectNodes("//*[@id='dle-content']/div/div[1]/h2/a").ToArray();
                    foreach (HtmlNode item in tempHeadNodes)
                    {
                        tempHead.Add(item.InnerText);
                    }
                }
                catch (Exception exc)
                {
                    Console.ForegroundColor = ConsoleColor.DarkRed;
                    Console.Write(" : Невозможно получить значение.");
                    Console.ForegroundColor = ConsoleColor.Gray; ;
                }
                Console.WriteLine();
            }
 
            Console.WriteLine();
 
            Console.WriteLine("{0,-5} {1,-55} {2,-15}", "#", "Наименование", "Просмотры"); // 673 сериала 
            int count = 0;
            for (int i = 0; i < tempHead.Count; i++)
            {
                count++;
                string temp = tempHead[i];
                string secondShortStoryHead = temp.Remove(temp.IndexOf('/'), temp.Length - temp.IndexOf('/'));
                shortStoryHead.Add(secondShortStoryHead);
                Console.WriteLine("{0,-5} {1,-55} {2,-15}", count, shortStoryHead[i], staticInfoRightSmotr[i]);
            }
 
            Console.ReadKey(true);
        }
    }
}


Результат работы программы:
Кликните здесь для просмотра всего текста
LOAD PAGE:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 : Невозможно получить значение.
16
17
18
19
20 : Невозможно получить значение.
21
22 : Невозможно получить значение.
23
24
25
26
27
28
29
30
31
32 : Невозможно получить значение.
33 : Невозможно получить значение.
34 : Невозможно получить значение.
35 : Невозможно получить значение.
36 : Невозможно получить значение.
37 : Невозможно получить значение.
38 : Невозможно получить значение.
39 : Невозможно получить значение.
40 : Невозможно получить значение.
41 : Невозможно получить значение.
42 : Невозможно получить значение.
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68


На некоторых страницах нет элементвом с просмотрами (*[@id='dle-content']/div/div[2]/div[2]/span[1])
0
 Аватар для Voronkin
469 / 296 / 166
Регистрация: 18.03.2018
Сообщений: 960
14.12.2019, 22:15
У тебя же уже все есть)))

C#
1
2
3
4
5
6
                 catch (Exception exc)
                {
                    Console.ForegroundColor = ConsoleColor.DarkRed;
                    Console.Write(" : Невозможно получить значение.");
                    Console.ForegroundColor = ConsoleColor.Gray; ;
                }
Попробуй например так:
C#
1
2
3
4
5
6
7
                catch (Exception exc)
                {
                    tempHead.Add("0"); 
                    //Console.ForegroundColor = ConsoleColor.DarkRed;
                    //Console.Write(" : Невозможно получить значение.");
                    //Console.ForegroundColor = ConsoleColor.Gray; ;
                }
0
1 / 1 / 0
Регистрация: 14.10.2019
Сообщений: 54
15.12.2019, 08:07  [ТС]
Voronkin, Проблема оказалась не в парсинге просмотров а в парсинге названия сериалов, хз почему но выдает исключение при поиске имени на 15 стр и тд, без понятия в чем дело (
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
using HtmlAgilityPack;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace htmlagilitypackDemo
{
    class Program
    {
        static void Main()
        {
            List<string> staticInfoRightSmotr = new List<string>(); // Просмотры сериалов
            List<string> shortStoryHead = new List<string>(); // Русскоязычное название сериала Фулл название сериала, Ребята-чирлидеры!
            List<string> tempHead = new List<string>(); // Фулл название сериала, Ребята-чирлидеры! / Cheer Danshi! [1-4 из 12+]
            List<string> pageURL = new List<string>(); // URL страниц
 
            string BaseURL = "https://web.archive.org/web/20140207223054/http://animevost.org:80/";
 
            int PageStart;
 
            //string[] URL = new string[6]
            //{
            //    "https://web.archive.org/web/20140207223054/http://animevost.org:80/", // 2014
            //    "https://web.archive.org/web/20150928012759/http://animevost.org:80/", // 2015
            //    "https://web.archive.org/web/20160307084952/http://animevost.org:80/", // 2016
            //    "https://web.archive.org/web/20170418030454/http://animevost.org:80/", // 2017
            //    "https://web.archive.org/web/20180430213640/http://animevost.org:80/", // 2018
            //    "https://web.archive.org/web/20190504202340/http://animevost.org:80/", // 2019
            //};
 
            Console.Write("LOAD PAGE:\n");
 
            HtmlWeb web = new HtmlWeb();
            HtmlDocument document = null;
            for (PageStart = 1; PageStart <= 234; PageStart++)
            {
                Console.Write(PageStart);
                if (PageStart == 1)
                {
                    document = web.Load("https://web.archive.org/web/20140207233343/http://animevost.org");
                }
                else
                {
                    document = web.Load(BaseURL + "page/" + PageStart + "/");
                }
 
                HtmlNode[] staticInfoRightSmotrNodes = null;
                HtmlNode[] tempHeadNodes = null;
                try
                {
                    //Получить все просмотры сериалов на странице
                    staticInfoRightSmotrNodes = document.DocumentNode.SelectNodes("//*[@id='dle-content']/div/div[2]/div[2]/span[1]").ToArray(); // просмотры
                    foreach (HtmlNode item in staticInfoRightSmotrNodes)
                    {
                        staticInfoRightSmotr.Add(item.InnerText);
                    }
 
                    // Получить все названия сериалов на странице
                    tempHeadNodes = document.DocumentNode.SelectNodes("//*[@id='dle-content']/div/div[1]/h2/a").ToArray(); // названия
                    foreach (HtmlNode item in tempHeadNodes)
                    {
                        tempHead.Add(item.InnerText);
                    }
 
                }
                catch (ArgumentNullException exc)
                {
                    for (int i = 0; i < tempHead.Count; i++)
                    {
                        staticInfoRightSmotr.Add("0");
                    }                    
                    Console.ForegroundColor = ConsoleColor.DarkRed;
                    Console.Write(" : Невозможно получить значение.");
                    Console.ForegroundColor = ConsoleColor.Gray; ;
                }
                Console.WriteLine();
            }
 
            Console.WriteLine();
 
            Console.WriteLine("{0,-5} {1,-55} {2,-15}", "#", "Наименование", "Просмотры"); // 673 сериала 
            int count = 0;
            for (int i = 0; i < tempHead.Count; i++)
            {
                count++;
                string temp = tempHead[i];
                string secondShortStoryHead = temp.Remove(temp.IndexOf('/'), temp.Length - temp.IndexOf('/'));
                shortStoryHead.Add(secondShortStoryHead);
                Console.WriteLine("{0,-5} {1,-55} {2,-15}", count, shortStoryHead[i], staticInfoRightSmotr[i]);
            }
 
            Console.ReadKey(true);
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.12.2019, 08:07
Помогаю со студенческими работами здесь

Delphi - получить дату из HTML документа.
Здравствуйте, Как получить дату создания(редактирования) - веб-страницы, Внизу страницы находится строка (&quot;Последнее изменение этой...

как получить текст Word-документа в HTML-виде
Всем привет! Подскажите, пожалуйста, как получить текст в HTML-виде с помощью макроса, если, конечно, такое возможно. Это нужно для...

Вывести все таги из документа html
Добрый день, подскажите новичку, каким образом можно вывести все таги из любого документа html?

Из HTML документа убрать все ссылки
Проблема: мне нужно из HTML документа убрать все ссылки, при этом оставить сам текст ссылки. Пользуюсь vim. Пробовал такую команду ...

С помощью xpath получить htmlnode из html документа. Всегда возвращается Null
Целый день гуглю =((( HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; request...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru