Найти в Дзене
Блог разработчика

Парсинг сайта в iOS приложении [Часть 2]

В первой части я рассказал о iOS библиотеке DZReadability и ее применении для парсинга HTML страниц. Как и обещал, расскажу о способах улучшить обработку новостей приводя отображение к единому стилю. Для этого заменим наш предыдущий код на такой: Затем добавим метод makeMagickForString: Как вы могли заметить, мы ввели метод crateStringForPageWith: из класса SiteParcer. Именно этот класс будет обрабатывать полученную после использования библиотеки HTML строку. Для чего нам это нужно - спросите вы? Библиотека не всегда выдает вам готовый и желаемый результат (все зависит от страницы, которую вы в него передаете). Приходится заменять некоторые параметры в выданном HTML коде, чтобы затем исправленный вариант с помощью NSAttributedString отображать в UITextView. Он прекрасно умеет отображать такой контент. Создадим класс SiteParcer и добавим в него эти строки: Как вы видите, мы вновь добавляем в строку html код и указываем цвет текста. Это необходимо если вы будете использовать парсер не т

В первой части я рассказал о iOS библиотеке DZReadability и ее применении для парсинга HTML страниц. Как и обещал, расскажу о способах улучшить обработку новостей приводя отображение к единому стилю.

Источник: https://www.pexels.com/
Источник: https://www.pexels.com/

Для этого заменим наш предыдущий код на такой:

Затем добавим метод makeMagickForString:

Как вы могли заметить, мы ввели метод crateStringForPageWith: из класса SiteParcer. Именно этот класс будет обрабатывать полученную после использования библиотеки HTML строку. Для чего нам это нужно - спросите вы? Библиотека не всегда выдает вам готовый и желаемый результат (все зависит от страницы, которую вы в него передаете). Приходится заменять некоторые параметры в выданном HTML коде, чтобы затем исправленный вариант с помощью NSAttributedString отображать в UITextView. Он прекрасно умеет отображать такой контент.

Создадим класс SiteParcer и добавим в него эти строки:

Как вы видите, мы вновь добавляем в строку html код и указываем цвет текста. Это необходимо если вы будете использовать парсер не только для своего сайта, например, цвет, шрифт, форматирование текста на других страницах может не соответствовать цвету на вашем портале.

Следующим этапом начнем обработку стилей. Добавив метод, указанный ниже перед return stringForPage, мы изменим все вхождения тегов <p><span> на теги с нужным стилем, в данном случае мы изменяем размер текста до 14 пикселей.

Поступим так же с тегами <h2>

Можно изменять размер изображений, чтобы привести их к единому виду

Получив в данном случае отображение картинок с шириной 300 и высотой 200.

Кстати, сделать картинки 16x9 можно вот таким способом:

float height = self.view.frame.size.width * 9 / 16;

Отрефакторим полученный код? Добавляя в него новые вхождения, можно получить очень длинное и нечитаемое полотно, вам оно нужно?)))

Рефакторинг кода
Рефакторинг кода

Введем NSDictionary *replacingItems, добавив в него все наши вхождения как ключи и замены как значения:

Согласитесь, выглядит и читается такой код намного приятнее!

В итоге всех этих действий мы получим более приятное отображение статей, новостей, страниц с сайтов используя парсер. Изменяйте код под ваши потребности и используйте в своих проектах. Подписывайтесь на канал и ставьте лайк, если вам понравилась статья.

Первая статья -- > тут