@OldSchoolWeb

Где ошибка у меня в парсере html C#?

Есть проект. Парсер сделанный по уроку, прилагаю ссылку на этот проект, чтобы вы смоги сами посмотреть код. При запуске исходного кода - парсятся заголовки хабры, я изменил настройки под свой запрос, но заголовки не парсятся, хотя точно сделал всё правильно.

Очень прошу помощи.
GitHub Sorce

Что я делал, я заменил класс ссылок в файле лежащий в папке Core/Habra/HabraParser.cs
с post__title_link на PreviewTooltip (единственное грешу, что там title class)

так же, я поменял в файле лежащий в папке Core/habra/HabraSettings.cs ссылку на сам форум
с https://habrahabr.ru на https://mysite/forums/252
и поменял префикс с page{CurrentId} на page-{CurrentId}
так как при переходи выходит ссылка https://mysite/forums/252/page-2

Так же даю полный html этого блока, где находится линка:
<div class="listBlock main">
  <div class="titleText">
 <h3 class="title"><a href="threads/61443/" title="" class="PreviewTooltip" data-previewurl="threads/61443/preview">Название темы</a></h3>
</div>
</div>


Что мне нужно? А нужно мне как-раз таки спарсить data-previewurl значение, чтобы парсер выдал мне в листе mysite.ru/threads/61443/ такой результат . и все страницы которые есть в категории этого форума
  • Вопрос задан
  • 137 просмотров
Пригласить эксперта
Ответы на вопрос 1
@kttotto
пофиг на чем писать
Кажется Вы не разбирались в работе парсера и не читали документацию AngleSharp.

Во первых, как дебажить парсер по https://mysite/forums? Представлять мысленно, догадываясь интуитивно?

Во вторых, Вы хотите получить значение атрибута data-previewurl, но результат mysite.ru/threads/61443, а это уже значение другого атрибута - href, а в вопросе Вы говорите "но заголовки не парсятся". Вы определитесь: Вам нужен заголовок или значение атрибута и какого?

В третьих, если бы Вы прочитали документацию, то узнали бы как получить значение атрибута, я в Вашем проекте добавил в метод Parse
if (item.HasAttribute("data-previewurl"))
{
	list.Add(item.GetAttribute("data-previewurl"));
}

Для этого пришлось захардкодить Ваш html блок.
Ну и собственно ваша потребность будет выглядеть как
"mysite.ru/" + item.GetAttribute("data-previewurl")

Все прекрасно работает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы