Arhn - архитектура программирования

Получить данные с веб-страницы с помощью applescript

Я работаю над своим первым яблочным скриптом. Я открываю веб-страницу через Safari, например: страница Evernote — https://itunes.apple.com/us/app/evernote/id281796108, и я хочу получить версию и дату последнего обновления, которая находится в левой части страницы, то есть под изображением логотипа приложения в разделе «Категория», оно «Обновлено». и «Версия».

Вот сценарий, над которым я работаю:

tell application "Safari"
    open location "https://itunes.apple.com/us/app/evernote/id281796108?"
    activate
end tell


tell application "System Events"
    tell process "Safari"
        -- Add the logic to get the updated date and version.
    end tell
end tell

Можно ли получить данные с веб-страницы через applescript?

15.08.2014

Ответы:


1

Вот метод, который работает с Applescript. Возможно, далеко не лучший, но начало.

set source_code to do shell script "curl https://itunes.apple.com/us/app/evernote/id281796108"
set int_1 to offset of "class=\"label\">Updated: </span>" in source_code
set int_2 to offset of "<span class=\"label\">Version: </span>" in source_code
set Update_date to characters (int_1 + 30) thru (int_1 + 41) in source_code as string
set Version_text to characters (int_2 + 36) thru (int_2 + 40) in source_code as string

get Update_date & " - " & Version_text

Более прямым и разнообразным подходом может быть:

set hyperlink to "https://itunes.apple.com/us/app/evernote/id281796108"

do shell script "curl " & quoted form of hyperlink & " | grep -o 'class=\"label\">Updated: </span>[A-Za-z0-9, ]\\{0,\\}</li><li><span class=\"label\">Version: </span>[0-9 .]\\{0,\\}' | sed 's/class=\"label\">Updated: <\\/span>//g' | sed 's/<\\/li><li><span class=\"label\">Version: <\\/span>/ - /g'"

Вы можете заменить Var hyperlink практически любым приложением в магазине iTunes, и оно должно работать так же.

15.08.2014
  • Неплохо, так как использование curl намного быстрее, чем запуск Safari, но я бы использовал регулярное выражение для получения строк вместо фиксированного числа. Что-то вроде... set Version_text to do shell script "echo " & quoted form of source_code & " | perl -ne 'print \"$1\" if />Version: <\\/span>(.*?)</'" 25.09.2014
  • @Vic Это правда! Или, что еще лучше, направьте curl прямо в perl :) За исключением того, что если вы хотите, чтобы одна командная строка получала оба, я бы лично завил, затем grep -o, а затем sed или perl, чтобы очистить Html и просто иметь дату обновления и версия. Что-то вроде: curl https://itunes.apple.com/us/app/evernote/id281796108 | grep -o 'class=\"label\">Updated: </span>[A-Za-z0-9, ]\{0,\}</li><li><span class="label">Version: </span>[0-9 .]\{0,\}' | sed 's/class="label">Updated: <\/span>//g' | sed 's/<\/li><li><span class="label">Version: <\/span>/ - /g' 26.09.2014

  • 2

    Способ управления веб-страницами с помощью AppleScript заключается в использовании команды AppleScript «do javascript» для запуска JavaScript на веб-странице. JavaScript предназначен для манипулирования веб-страницами, поэтому в нем есть все необходимые инструменты для получения значений текстового узла или всего, что вы хотите сделать.

    Как получить фрагмент HTML через Applescript с помощью Javascript

    19.08.2014
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..