Как экспортировать все гиперссылки на веб-страницу?

557
user598527

Мне нужно решение для экспорта всех гиперссылок на веб-странице (на веб-странице, а не со всего сайта) и способ указать ссылки, которые я хочу экспортировать, например, только гиперссылки, начинающиеся с https://superuser.com/questions/, за исключением все остальное.
Экспорт в виде текстового файла предпочтителен, и результаты должны отображаться один под другим, по одному URL на строку:

https://superuser.com/questions/1  https://superuser.com/questions/2  https://superuser.com/questions/3 [...] 
0
@JeffZeitlin: я пробовал `Invoke-WebRequest` в Powershell 5. Я использую как Windows, так и Linux, предпочтителен собственный метод терминала / Powershell. user598527 7 лет назад 0
Обратите внимание, что https://superuser.com не является бесплатным сервисом для написания скриптов / кодов. Если вы сообщите нам, что вы уже пробовали (включая скрипты / код, который вы уже используете) и где вы застряли, мы можем попытаться помочь с конкретными проблемами. Вам также следует прочитать [Как мне задать хороший вопрос?] (Https://superuser.com/help/how-to-ask). DavidPostill 7 лет назад 1
Если Invoke-WebRequest не возвращает HTML-код интересующей вас страницы, сначала вам необходимо устранить ее. Как только ваш Invoke-WebRequest завершится успешно, вы сможете проанализировать полученный HTML, чтобы извлечь то, что вам нужно. Не ожидайте, что мы напишем сценарий для вас, как указывает DavidPostill; вам нужно будет «показать свою работу». Jeff Zeitlin 7 лет назад 1

2 ответа на вопрос

2
iBug

Если вы работаете в системе Linux или Unix (например, FreeBSD или macOS), вы можете открыть сеанс терминала и выполнить эту команду:

wget -O - http://example.com/webpage.htm | \ sed 's / href = / \ nhref = / g' | \ grep href = \ "http://specify.com | \ sed 's /.* href = "// g; s /".*// g'> out.txt

В обычных случаях <a href>в одной строке может быть несколько тегов, поэтому сначала их нужно обрезать (первый sedдобавляет новые строки перед каждым ключевым словом, hrefчтобы убедиться, что в одной строке не более одного из них).
Чтобы извлечь ссылки из нескольких похожих страниц, например, из всех вопросов на первых 10 страницах этого сайта, используйте forцикл.

для я в $ (сек 1 10); делать wget -O - http://superuser.com/questions?page=$i | \ sed 's / href = / \ nhref = / g' | \ grep -E 'href = "http://superuser.com/questions/[0-9]+' | \ sed 's /.* href = "// g; s /".*// g' >> out.txt сделанный

Не забудьте заменить http://example.com/webpage.htmна фактический URL страницы и http://specify.comна предыдущую строку, которую вы хотите указать.
Вы можете указать не только предыдущую строку для URL-адреса для экспорта, но также шаблон регулярного выражения, если вы используете egrepили grep -Eв приведенной выше команде.
Если вы используете Windows, рассмотрите возможность использования Cygwin . Не забудьте выбрать пакеты Wget, grepи sed.

Это почти тот метод, который я использую для пакетной загрузки музыки с [KHInsider] (http://downloads.khinsider.com), не покупая их VIP-сервис. Просто вручную извлеките ссылки и поместите их в менеджер загрузок, например [IDM] (https://www.internetdownloadmanager.com). iBug 7 лет назад 0
0
Yisroel Tech

Если вы согласны с использованием Firefox для него, вы можете добавить дополнение Snap Links Plus

  1. Удерживая правую кнопку мыши, перетащите выделенную область вокруг ссылок.

  2. Когда они подсвечены, нажмите и удерживайте Control, отпуская правую кнопку мыши.

Не будет работать из-за метода выбора, исходная страница может быть длиной в сотни страниц. user598527 7 лет назад 0
Так что на самом деле ни один метод, основанный на странице, не будет работать, поскольку «исходная страница» (https://superuser.com/questions/) - это всего лишь одна страница, и вы хотите, чтобы она сохранялась со всех «сотен страниц» (например, https). : //superuser.com/questions страница = 2) Yisroel Tech 7 лет назад 0
Эта страница была только примером. user598527 7 лет назад 0
Но все же, что вы подразумеваете под "сотнями страниц"? Если вам нужно что-то нажать, чтобы загрузить больше страниц, значит, это не одна страница. Yisroel Tech 7 лет назад 0
«Примерно», например, эта страница такая длинная (хотя она не имеет гиперссылок, используется в качестве примера из-за небольшого размера): https://easylist-downloads.adblockplus.org/easylist.txt Есть еще сайты, которые я может захотеть экспортировать ссылки из. user598527 7 лет назад 0
Ох, понял. Это расширение для CXhrome, похоже, выполняет свою работу https://chrome.google.com/webstore/detail/link-klipper-extract-all/fahollcgofmpnehocdgofnhkkchiekoo?hl=en Yisroel Tech 7 лет назад 1