Подтвердить что ты не робот

Доступ iOS к функции Safari Reader через интерфейс UIWebView

Я использую iOS 4.3 и задавался вопросом, есть ли способ, с помощью которого я могу получить доступ к функции Safari "Reader" , через которую веб-страницы удалены из рекламы и других риффов, а контент занимает центральное место.

Если вы открываете какую-либо статью в Safari (на веб-сайте Wikipedia), в строке URL появляется кнопка "Reader". Нажатие на него представляет новое окно, красиво представляющее контент.

Как я могу использовать эту функцию в iOS через UIWebView?

enter image description here

PS: Я знаю, что есть что-то, называемое Проект Readability. Но я понятия не имею, как использовать это через UIWebView. Также для некоторых веб-сайтов Safari Reader принимает вызов не для включения функции "Reader", может быть, у нее нет достаточной уверенности?

4b9b3361

Ответ 1

На самом деле кнопка читателя выполняет немного анализа, где анализирует HTML-страницу, а затем видит четкий тег тела для разбора. Если этот плагин сможет извлечь точное тело, он включит кнопку считывателя (Мое понимание из исходного кода читаемости). Теперь, чтобы реализовать то же самое для webview, вам просто нужно вставить java script в свой код (этот java script уже доступен в исходном коде удобочитаемости), а затем вы можете добиться того же эффекта.

Но я подозреваю, что будущий план из яблока для него. Потому что они не могут позволить кому-либо еще сделать это извлечение контента огромными возможностями для бизнеса, связанными с iCloud, с комбинацией читаемости.

Если вы хотите, вы можете просто извлечь HTML из UIWebView, а затем извлечь тело и использовать его для своей цели. Это не очень научная ракета для извлечения.

Для аналитической точки зрения, просто произвольно в течение нескольких 10 страниц HTML с включенной кнопкой Reader вы увидите, что основной котент принадлежит только телу, а остальные элементы добавления, заголовка и нижнего колонтитула разделены.

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

Ответ 2

Важно: НАСТОЯЩИЙ ОТВЕТ НЕ ДОЛЖЕН РАБОТЫ!

Чтение отключено 30 сентября 2016 года.

Вот что они рекомендуют в качестве замены: https://mercury.postlight.com/web-parser/

Сохранение ответа в качестве исторической ссылки

--- Оригинальный ответ ---

Для этого вы можете использовать мобилизатор удобочитаемости. Вы получите очищенную версию любой статьи в стилистике Readability:

http://www.readability.com/m?url=http://{URLOFTHEARTICLE}

Просто подготовьте URL-адрес и загрузите его в свой UIWebView. Вот как это выглядит в действии:

http://www.readability.com/m?url=http%3A%2F%2Fwww.cnn.com%2F2013%2F01%2F11 % 2Fshowbiz% 2Ftv% 2Fgolden-глобусы-ТВ-виноградник% 2Findex.html% 3Fhpt% 3Dhp_abar

Ответ 4

Не анализируйте HTML изначально на iOS, я сделал это раньше и его грязный бизнес. Либо создайте свой собственный веб-сервис, чтобы выполнить всю неприятную работу, либо посмотрите на читаемость (readability.com), которую они предоставляют API. Также есть порт рубинов с открытым исходным кодом, python и php, который вы можете найти здесь.

https://github.com/iterationlabs/ruby-readability

https://github.com/gfxmonk/python-readability

http://code.fivefilters.org/p/php-readability/source/tree/master/

Для вас, энтузиастов рубинов, читаемость также доступна в качестве драгоценного камня, просто для этого.

Ответ 5

Вы даже можете сделать это, введя javascript.

#define readJS @"(function(){window.baseUrl='https://www.readability.com';window.readabilityToken='';var s=document.createElement('script');s.setAttribute('type','text/javascript');s.setAttribute('charset','UTF-8');s.setAttribute('src',baseUrl+'/bookmarklet/read.js');document.documentElement.appendChild(s);})()"

И затем, когда ваша веб-страница завершает загрузку

- (void)webViewDidFinishLoad:(UIWebView *)webview
{
    [webview stringByEvaluatingJavaScriptFromString:readJS];

Ответ 6

Вы можете сделать это в iOS9. первый импорт SafariServices:

#import <SafariServices/SafariServices.h>

Затем мы создаем экземпляр SFSafariViewController и добавляем его как подвью. У нас есть два варианта:

  • Создание только с базовым URL
  • Создание с помощью базового URL-адреса, а также ввод "Режим чтения" в случае его доступности
NSString *sURL = @"http://google.com";

NSURL *URL = [NSURL URLWithString:sURL];

SFSafariViewController *safari = [[SFSafariViewController alloc] initWithURL:URL]; // 1.

SFSafariViewController *safari = [[SFSafariViewController alloc] initWithURL:URL entersReaderIfAvailable:YES]; // 2.

[self presentViewController:safari animated:YES completion:nil];