Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174

Парсинг с помощью Fizzler.Systems.HtmlAgilityPack

23.02.2024, 19:54. Показов 1543. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, уважаемые форумчане!
Возник вопрос, уже много чего перепробовал, но ничего не получается.

Есть новостной сайт https://www.cnbc.com/

Из него,условно, возьмем новость https://www.cnbc.com/2024/02/2... risis.html

Мне нужно с помощью Fizzler.Systems.HtmlAgilityPack спарсить с этой новости картинку и текст под ней.
Перепробовал миллион вариантов, на некоторых получалось, но с багами, например, захватывал картинку из видео-файла или, например, из 5 картинок находил 1-2 на странице.

Самый правильный метод на данный момент таков, но он не идеальный:


C#
1
2
3
var img = doc.QuerySelectorAll(".ArticleBody-articleBody").Select(x => x.SelectSingleNode(".//img").GetAttributeValue("src", ""))
    .Select(x => x!)
    .ToList();
Какие есть варианты вытащить все фотографии со страницы, при этом не захватывая видео и прочий мусор.

Спасибо, нуждаюсь в помощи!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.02.2024, 19:54
Ответы с готовыми решениями:

Тонкости парсинга через Fizzler и HtmlAgilityPack
Привет. Есть простой код для парсинга сайта на HtmlAgilityPack с поддержкой Fizzler. В целом все было бы хорошо, если бы не проблема, из-за...

Парсинг с помощью HtmlAgilityPack
Здравствуйте. Нужно спарсить со страницы два числа, которые стоят между тегов <span id="first_id">*первое...

Парсинг, HtmlAgilityPack
В общем давно хотел затронуть тему парсинга, сейчас появился повод... В общем полазил я по инету и увидел что многие советуют...

25
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
24.02.2024, 02:47  [ТС]
Студворк — интернет-сервис помощи студентам
OwenGlendower, https://www.cnbc.com/2024/02/1... -time.html

Вот, например, тут 2 картинки
Одна есть в мета, вторую не смог нигде найти по htmlDocument
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18395 / 14326 / 5370
Регистрация: 17.03.2014
Сообщений: 29,000
Записей в блоге: 1
24.02.2024, 09:35
Цитата Сообщение от AndreyXP Посмотреть сообщение
вторую не смог нигде найти по htmlDocument
А я нашел. Оба изображения находятся внутри длинного JSON. Его начало можно найти по window.__s_data=, конец по window.__c_data=. Внутренности там сложные. Нужно искать объект с "tagName": "image". У него есть атрибуты: ссылка, описание и другие. Смотрите в прикрепленном этот JSON (только красиво отформатированный). В пост он не влезает из-за большого размера.
Вложения
Тип файла: zip s_data.zip (20.4 Кб, 6 просмотров)
0
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
24.02.2024, 10:21  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
А я нашел. Оба изображения находятся внутри длинного JSON. Его начало можно найти по window.__s_data=, конец по window.__c_data=. Внутренности там сложные. Нужно искать объект с "tagName": "image". У него есть атрибуты: ссылка, описание и другие. Смотрите в прикрепленном этот JSON (только красиво отформатированный). В пост он не влезает из-за большого размера.
Спасибо!!! Сейчас попробую как-нибудь теперь их достать....

Добавлено через 4 минуты
Очень странно, я когда получаю htmlDocument, у меня тоже есть Json с window.__s_data=
но, при этом, нет "tagName": "image"

Добавлено через 37 минут
OwenGlendower, Как вы, кстати, вытащили Json файл из страницы? Сейчас что-то ищу, но не выходит.
0
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
24.02.2024, 12:23  [ТС]
OwenGlendower,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
var json = doc.Descendants()
     .Where(n => n.Name == "script" && n.InnerText.StartsWith("window.__s_data"))
     .FirstOrDefault().InnerText
     .Substring(16);
 
int index = json.IndexOf("; window.__c_data");
 
json = json.Substring(0, index);
 
 
dynamic data = JsonConvert.DeserializeObject(json);
 
var data1 = data.page.page.layout[1].columns;
Я все ближе и ближе, но не могу зайти в modules, пишет ошибку
Кстати, как вы правильно в Json файле убрали регистр? Я использовал Regex.Unescape, но получил лишь проблемы.
Миниатюры
Парсинг с помощью Fizzler.Systems.HtmlAgilityPack  
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18395 / 14326 / 5370
Регистрация: 17.03.2014
Сообщений: 29,000
Записей в блоге: 1
24.02.2024, 14:31
Лучший ответ Сообщение было отмечено AndreyXP как решение

Решение

Цитата Сообщение от AndreyXP Посмотреть сообщение
Я все ближе и ближе, но не могу зайти в modules, пишет ошибку
У меня вот так получилось вытащить
C#
1
2
3
4
5
6
7
8
JObject j = JObject.Parse(json);
var images = j.Descendants()
    .Where(jj => jj.Type == JTokenType.Object)
    .Where(jj => jj.Value<string>("tagName") == "image")
    .Select(jj => new {
        Url = jj["attributes"].Value<string>("url"),
        Caption = jj["attributes"].Value<string>("caption")
    });
Цитата Сообщение от AndreyXP Посмотреть сообщение
Очень странно, я когда получаю htmlDocument, у меня тоже есть Json с window.__s_data=
но, при этом, нет "tagName": "image"
Попробуйте найти без пробела: "tagName":"image", он добавился везде при переформатировании.

Цитата Сообщение от AndreyXP Посмотреть сообщение
Как вы, кстати, вытащили Json файл из страницы?
Скопировал исходный код страницы в Notepad++, выделил нужный блок текста и воспользовался секретной командой под названием copy-paste.

Цитата Сообщение от AndreyXP Посмотреть сообщение
Кстати, как вы правильно в Json файле убрали регистр?
Какой регистр? Вы о чем?
1
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
24.02.2024, 19:33  [ТС]
OwenGlendower, Спасибо Вам большое! Очень помогли!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.02.2024, 19:33

HtmlAgilityPack парсинг, проблемы с кодировкой
Здравствуйте. Хочу отобразить весь html код из ресурса. private void button1_Click(object sender, EventArgs e) ...

Работа с парсерами HTML (AngleSharp | Fizzler)
Добрый день всем! Решил разобраться в работе с парсингом HTML. Погуглив узнал о лучших парсерах для этого. А именно о AngleSharp и о...

парсинг с помощью mshtml
pps ошибся и не правильно назвал тему, с помощью mshtml Всем привет такой вопрос. У меня есть html страничка, которую я получаю с...

Парсинг элементв с помощью HtmlAgilityPack
Помогите найти ошибку в коде. Сайт взял произвольный. X path с заголовка H1 &lt;h1 class=&quot;mainhead&quot;&gt;Госдума приняла закон о...

Парсинг страницы с помощью HtmlAgilityPack
Имеется такая конструкция: &lt;div id=&quot;farm_town_20721&quot; class=&quot;tile farmtown_not_owned_on_same_island ft5&quot; style=&quot;left: 47290px; top:...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru