wget, curl - загруженное содержимое страницы кодируется + знак как "+" - PullRequest
0 голосов
/ 09 июля 2020

Как сказано в названии. например, do

wget "https://www.veracrypt.fr/en/Downloads.html" --local-encoding=utf-8 --remote-encoding=utf-8 -O - | less

Обратите внимание, что элементы <a href> на странице содержат &#43;download, а не +download, как ожидалось. Загрузка этого закодированного URL-адреса в wget (или curl) снова приводит к сбою загрузки.

Как это обойти? Чтобы быть ясным, цель состоит в том, чтобы wget / curl содержимое страницы, grep ссылку для загрузки с нее и wget, на которую указывает ссылка на ресурс.

1 Ответ

1 голос
/ 09 июля 2020

Вот что буквально в коде:

<a href="https://launchpad.net/veracrypt/trunk/1.24-update6/&#43;download/VeraCrypt%20Setup%201.24-Update6.exe">

Итак, wget просто дает вам то, что у него есть. Помните, что внутри атрибута элемента вы можете экранировать символы, используя HTML экранирование сущности . Это действительно HTML, и совместимый браузер правильно его декодирует перед его использованием.

Вы можете сделать то же самое с любым HTML декодером сущностей. Если ваш инструмент извлечения не может их декодировать за вас, вам сначала придется декодировать их самостоятельно.

...