Получить глубокие ссылки на фотографии Викимедиа Коммонс

Я хотел бы получить полнотекстовый URL из картинок Wikimedia Commons. В качестве примера я хотел бы получить https://upload.wikimedia.org/wikipedia/commons/6/69/Trittin%2C_J%C3%BCrgen-0126.jpg из файла: Trittin, Jürgen-0126.jpg. Вот источник HTML:

<div class="fullMedia"><a href="https://upload.wikimedia.org/wikipedia/commons/6/69/Trittin%2C_J%C3%BCrgen-0126.jpg" class="internal" title="Trittin, Jürgen-0126.jpg">Original file</a> &#8206;<span class="fileInfo">(1,996 × 3,000 pixels, file size: 2.2 MB, MIME type: <span class="mime-type">image/jpeg</span>)</span>
</div>

Поскольку я делаю много запросов, я бы предпочел более легкое решение для Unix-инструментов, чем BeautifulSoup. Существует также API ( https://commons.wikimedia.org/w/api.php?action=query&prop=imageinfo&titles=File:Trittin,_J%C3%BCrgen-0126.jpg&iiprop=url), но для меня, как простой сценарий bash JSON это наложение!

Я рад, если вы могли бы помочь мне.

3 ответа

Решение

Заменить в URL

File:

с

Special:FilePath/

Как уже говорили другие, вы должны использовать JQ.

curl --silent 'https://commons.wikimedia.org/w/api.php?format=json&formatversion=2&action=query&prop=imageinfo&titles=File:Trittin,_J%C3%BCrgen-0126.jpg&iiprop=url' | jq --raw-output '.query.pages[0].imageinfo[0].url'

Мой хак с использованием curl и grep:

 curl -s https://commons.wikimedia.org/wiki/File:Trittin,_J%C3%BCrgen-0126.jpg | grep fullImageLink | grep -o  'http[^ ]*jpg'
Другие вопросы по тегам