0

Взялся изучать С#, хочу сделать парсер с помощью AngleSharp.

Прошу помощи в описании общей логики.

Дано:

1) Сайт со списком статей. Их заголовки и ссылки могу получить по классу, с помощью селекторов. Для начала, можно только на одной странице сайта.

2) На странице каждой статьи есть нужные картинки (штук 5), которые я тоже могу получить по классу. Они маленькие.

Хочу вывести в форму подряд заголовки и картинки им соответствующие.

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

Может в общих чертах, или еще как-то подскажете, как правильно архитектуру построить?

Спасибо.

keltkelt
  • 465
  • 1
    Не делайте сразу, это разные классы, разные ответственности (SPR из SOLID). Отдельный класс - для парсинга статей, отдельный - для разбора статьи и получения картинок. Нашли ссылку на статью - поставили в очередь задание для поиска картинок. – A K Jun 25 '19 at 10:58
  • @AK Спасибо. А правильно ли будет составить в логике список из статьей и ссылкок на картинки, а потом уже их отобразить? Я вообще не представляю как это делать, хотя принцип async и await понятен. Плюс вообще до этого больше с функциями работал, а не с разными классами, не очень понимаю зачем на классы все разбивать. – keltkelt Jun 25 '19 at 18:47
  • Т.е. я делаю отдельный класс для парсинга страницы с заголовками.... Жду? Или не жду... И почему класс, а не функцию...И получаю.. видимо словарь со ключом - заголовком и значением - ссылкой. Потом наверное иду по словарю и ...(асинхронно?) эээ создаю экземпляры второго класса, который занимается парсингом страниц с картинками? В общем моя голова в аду))) Классы, асинхронность, что правильно что нет. – keltkelt Jun 25 '19 at 18:49
  • 1
    Сделайте пока как угодно, "лишь бы работало". Если проблем не появится - считайте, что задача сделана и можно ничего не улучшать. Если проблемы появятся - то придёте с конкретной проблемой и реальным кодом. Пока у вас проблема "боязнь чистого листа". Пишите и на ходу делайте рефакторинг, если получается как-то нехорошо. Пока ваши опасения "вдруг я напишу неправильно" бесплодны и мешают начать работу. – A K Jun 25 '19 at 20:16
  • @AK Пробовал AngleSharp - запутался, сейчас делаю с HtmlAgiliyPack. Но он почему-то не парсит изображения, которые... эмм. Ну вот когда код страницы открываешь, исходный, а не панель разработчика - вот эти он парсит. А у меня лежат в "...>div>div>div>a>var>img". И даже если я селектором ищу по SelectNodes("//img") - находит только те. – keltkelt Jun 29 '19 at 11:24
  • 1
    Не рекомендуется в одну тему писать сразу несколько вопросов, придерживайтесь принципа "одна тема - один вопрос". Ваш изначальный вопрос был о архитектуре приложения, парсинг при помощи англшарп как деталь реализации. Текущий вопрос - другой, он не про архитектуру, а про то, как парсить какой-то конкретный элемент, да ещё другим парсером. Задайте в отдельной теме, это будет более правильно. – A K Jun 29 '19 at 11:27

0 Answers0