Bash - как получить ссылку для скачивания с официальной страницы плагина WordPress? - PullRequest
0 голосов
/ 20 августа 2011

Я пытаюсь получить ссылку на скачивание плагинов wordpress через bash-скрипт прямо с официального возраста.

Например, плагин akismet на http://wordpress.org/extend/plugins/akismet/

В исходном коде HTML мы можем легко узнать, где находится ссылка для скачивания:

<div class="col-3">
    <p class="button">
        <a href='http://downloads.wordpress.org/plugin/akismet.2.5.3.zip'>
            Download Version 2.5.3
        </a>
    </p>

Я заметил, что слова «Загрузить версию» появляются во всем файле только один раз, сразу после ссылки на скачивание, которую мы хотим получить.

Допустим, я не знаю, что такое ссылка для скачивания. Вопрос в том, как отфильтровать HTML-код, чтобы получить ссылку для скачивания (поэтому позже я смогу использовать его с wget или curl). Все, что я знаю, это URL страницы плагина. Как мне отфильтровать HTML-код для извлечения ссылки на скачивание.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 20 августа 2011
nadav@shesek:~$ curl -s https://wordpress.org/extend/plugins/akismet/ | egrep -o "https://downloads.wordpress.org/plugin/[^']+"
https://downloads.wordpress.org/plugin/akismet.2.5.3.zip


nadav@shesek:~$ wget `curl -s https://wordpress.org/extend/plugins/akismet/ | egrep -o "https://downloads.wordpress.org/plugin/[^']+"`
--2011-08-20 16:43:33--  https://downloads.wordpress.org/plugin/akismet.2.5.3.zip
Resolving downloads.wordpress.org... 72.233.56.138, 72.233.56.139
Connecting to downloads.wordpress.org|72.233.56.138|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 27714 (27K) [application/octet-stream]
Saving to: `akismet.2.5.3.zip'

100%[============================================================================================================================================================>] 27,714      39.9K/s   in 0.7s    

2011-08-20 16:43:35 (39.9 KB/s) - `akismet.2.5.3.zip' saved [27714/27714]

Обратите внимание на переключатель -o для grep, который выдает только согласованную часть вместо всей строки.

1 голос
/ 20 августа 2011

Вы можете попробовать следующее регулярное выражение:

href=['"](.*?)['"]>\s*Download Version [0-9.]+
...