Я только что выпустил инструмент, который собрал и использую вытащить информацию о контактах Google. Он здесь https://github.com/gedl/gc-csv
Я наткнулся на эту ветку в поисках такого инструмента, но не смог найти ни одного, который делает именно то, что мне нужно. Это может быть полезно для других.
Curl загрузить целых страниц. #
указывает на фрагмент .
Оба несовместимы.
Символ #
используется в конце ссылки на веб-страницу для обозначения позиции внутри всей веб-страницы.
...convention called "fragment URLs" to refer to anchors within an HTML document.
Что делать, если в ссылке есть знак решетки " #"
It's a "fragment" or "named anchor". You can you use to link to part of a document.
Википедия :Единый указатель ресурсов (URL-адрес)
An optional fragment component preceded by an hash (#). The fragment contains a fragment identifier providing direction to a secondary resource, such as a section heading in an article identified by the remainder of the URI. When the primary resource is an HTML document, the fragment is often an id attribute of a specific element, and web browsers will scroll this element into view.
Его основное использование заключается в перемещении «слоя представления» (того, что просматривается ), в начало элемента.
В curl нет «слоя представления», его цель — загрузить целые страницы, а не части или фрагменты страниц. Таким образом, маркер «фрагмент» в curl бесполезен. Он просто игнорируется curl.
Re -добавить тег к (перенаправленной )ссылке:
originallink='https://unix.stackexchange.com/q/453740#453743'
wholepage=$(curl -Lso /dev/null -w %{url_effective} "$originallink")
if [ "$originallink" != "${originallink##*#}" ]; then
newlink=$wholepage#${originallink##*#}
else
echo "link contains no segment"
newlink="$wholepage"
fi
echo "$newlink"
Будет напечатано:
https://unix.stackexchange.com/questions/453740/installing-busybox-for-ubuntu#453743
Более быстрое решение — не загружать страницу. В любом случае он перенаправляется на /dev/null
. Удалив опцию -L
и спросив, какая будет ссылка, если будет выполнено (первое перенаправление ). Первый редирект работает в этом случае и в большинстве других.
wholepage=$(curl -so /dev/null -w %{redirect_url} "$originallink")
Согласно этой ветке на сайте curl
под названием:Re :Как отправить часть фрагмента URL? Решетка предназначена для браузера, а не для сервера, поэтому curl
усекает ее.
The fragment part of a URI is not meant to be sent in the HTTP request - it is used to identify a specific section in the resource that will be fetched by using the particular URI. If you want to force #-letter into the request I think encoding it sounds like a perfect idea.
Посмотрев, я не нашел никакого способа для curl
сохранить его, кроме кодирования его как %23
,что я не думаю, что вы хотите.
Поскольку это клиент, который поддерживает строку после хэш-метки, я бы «наклонился к ней» и просто проанализировал ее, а затем повторно -добавил ее к возвращаемому URL-адресу из curl
, как это сделал бы настоящий клиент браузера. сделай это:
$ set 'https://unix.stackexchange.com/q/453740#453743'
$ echo "$(curl -I -L -s -o /dev/null -w %{url_effective} "$1")#$(echo "$1" | cut -d"#" -f2)"
https://unix.stackexchange.com/questions/453740/installing-busybox-for-ubuntu#453743