Следующий пример AppleScript код откроет targetURL
в новом Safari окне , дождитесь окончания загрузки страницы до sh, получите все URL на целевой странице , найдите их по URL , указывающим различные Уставные инструменты опубликованы сегодня, а затем откройте каждый в новой вкладке того же окна targetURL
, которое было открыто.
set targetURL to "http://www.legislation.gov.uk/new/uksi"
set theseURLs to {}
set grepSearchPattern to ".*\\.uk/uksi/.*\\|.*\\.uk/ssi/.*\\|.*\\.uk/wsi/.*\\|.*\\.uk/nisi/.*"
set jsStatements to "var a = document.links; var x = ''; var i; for (i = 0; i < a.length; i++) { x = x + a[i].href + '|'; };"
tell application "Safari"
make new document with properties {URL:targetURL}
activate
end tell
tell application "System Events"
repeat until exists ¬
(buttons of UI elements of groups of toolbar 1 of window 1 of ¬
process "Safari" whose name = "Reload this page")
delay 1
end repeat
end tell
tell application "Safari"
set allURLs to (do JavaScript jsStatements in document 1)
end tell
try
set theseURLs to paragraphs of (do shell script "tr '|' '\\12' <<< " & ¬
allURLs's quoted form & " | grep " & grepSearchPattern's quoted form)
end try
if (length of theseURLs) is greater than 0 then
tell application "Safari" to tell front window
repeat with thisURL in theseURLs
set current tab to (make new tab with properties {URL:thisURL})
end repeat
set current tab to first tab
end tell
else
display dialog " Nothing published on this date." buttons {"OK"} ¬
default button 1 with title "All New Legislation" with icon note
end if
Подсказка: наведите курсор мыши на горизонтальную и вертикальную прокрутку, чтобы увидеть полный код.
Примечания:
-
do JavaScript
1 команда создать pipe с разделителями string из всех URL на странице targetURL
. - Команда
do shell script
принимает pipe с разделителями string всех URL и заменяет pipe символы с новой строкой символов, с использованием tr
, поэтому grep
c возврат URL , которые соответствуют grepSearchPattern
. - Переменная
grepSearchPattern
в настоящее время ищет только Уставные инструменты , как я полагаю, это все, что будет показано в Все новое законодательство на странице , в которую открывается targetURL
, из-за /new/uksi
в targetURL
и что я ' Мы наблюдали по этому URL с тех пор, как вы разместили вопрос. Если вы также хотите ссылки для других типов законодательства, переменная grepSearchPattern
может быть скорректирована с учетом. - 1 Использование команды
do JavaScript
требует Разрешить JavaScript от Apple Events для проверки в Safari > Разработка , которое скрыт по умолчанию и может быть отображен путем проверки [√] Показать меню «Разработка» в строке меню в: Safari > Настройки… > Дополнительно
Если вам не разрешено включать этот параметр, URL-адреса можно собирать для обработки другим способом, однако для этого используется сторонняя утилита lynx
.
Открытие ссылок без использования команды do JavaScript
:
Следующий пример AppleScript код будет использовать lynx
для извлечения URL из targetURL
, поиска по ним URL , указывающих различные * 11 44 * Уставные инструменты , опубликованные сегодня, и если некоторые из них были опубликованы, откроется targetURL
в новом Safari окне , дождитесь страницы чтобы завершить загрузку sh, а затем открыть каждую в новой вкладке того же самого окна 1156 * targetURL
было открыто.
set targetURL to "http://www.legislation.gov.uk/new/uksi"
set theseURLs to {}
set lynxCommand to "/usr/local/bin/lynx --dump -listonly -nonumbers -hiddenlinks=ignore"
set grepSearchPattern to ".*\\.uk/uksi/.*\\|.*\\.uk/ssi/.*\\|.*\\.uk/wsi/.*\\|.*\\.uk/nisi/.*"
try
set theseURLs to paragraphs of ¬
(do shell script lynxCommand & space & targetURL's quoted form & ¬
" | grep " & grepSearchPattern's quoted form)
end try
if (length of theseURLs) is greater than 0 then
tell application "Safari"
make new document with properties {URL:targetURL}
activate
end tell
tell application "System Events"
repeat until exists ¬
(buttons of UI elements of groups of toolbar 1 of window 1 of ¬
process "Safari" whose name = "Reload this page")
delay 1
end repeat
end tell
tell application "Safari" to tell front window
repeat with thisURL in theseURLs
set current tab to (make new tab with properties {URL:thisURL})
end repeat
set current tab to first tab
end tell
else
display dialog " Nothing published on this date." buttons {"OK"} ¬
default button 1 with title "All New Legislation" with icon note
end if
Подсказка: наведите курсор мыши на горизонтальную и вертикальную прокрутку, чтобы увидеть полный код.
Примечания:
- В переменной
lynxCommand
, измените /usr/local/bin/lynx
на соответствующий /path/to/lynx
. lynx
можно установить с помощью Homebrew - Переменная
grepSearchPattern
в настоящее время ищет только Уставные инструменты , как я полагаю это все, что будет показано в разделе Все новое законодательство на странице 1189 *, к которому открывается targetURL
, из-за /new/uksi
в targetURL
, и что я наблюдал на тот URL , так как вы отправили вопрос. Если вы также хотите ссылки для других типов законодательства, grepSearchPattern
переменная может быть скорректирована с учетом.
Примечание: пример AppleScript код - это только то, что без включенной обработки ошибок не содержит никаких дополнительных ошибок обработка по мере необходимости. Пользователь должен добавить любую обработку ошибок , которая может быть уместной, необходимой или желаемой. Взгляните на оператор try и error оператор в Руководство по языку AppleScript . См. Также Работа с ошибками .