Разбор конкретных URL из локального файла HTML
Я хочу проанализировать определенные URL-адреса из сохраненного html- файла с помощью простой bash-скрипта / команды, чтобы я мог загрузить их через wget
laters.
То, что у меня есть, так это:
awk 'BEGIN{ RS="<a *href *= *\""} NR>2 {sub(/".*/,"");print; }' index.html >> url-list.txt
которая записывает каждую ссылку внутри моего html-файла в аккуратный txt-документ.
Однако мне нужны только конкретные ссылки
- из определенного домена
- все файлы.ogg, например
все, что в итоге будет выглядеть так:
http://www.foo.com/(randomfolder)/(randombasename).ogg
или же
http://subdomain.foo.com/(randomfolder)/(anotherrandomsubfolder)/(randombasename).ogg
заранее спасибо!
1 ответ
Вы говорите, что вам нужно сделать это "в Bash", но вы, похоже, имеете в виду "в скрипте", а не "используя чистый синтаксис Bash" (есть разница). Я предполагаю, что вы хотите значение "в сценарии".
Если вы сохранили все ссылки на отдельные строки в документе, вы можете выбрать все ссылки в домене. http://www.example.com/
например
grep "^http://www\.example\.com/" filewithlinks.txt
или все ссылки, заканчивающиеся на .ogg
с
grep "\.ogg$" filewithlinks.txt
(Обратная косая черта предшествующих периодов заключается в том, чтобы избежать.
"знак, который в противном случае означает" любой символ "."\.
"вместо этого означает буквальный период. Без экранирования вы будете сопоставлять ссылки, заканчивающиеся, например, также на" logg ".)
Вы также можете сделать сопоставление строк непосредственно в awk
команда, но это было бы сложнее менять время от времени, я считаю. Самый простой способ - сохранить полный список ссылок в файле, как вы делаете, а затем просто выполнить поиск файла, например, grep
как указано выше. Тогда вам также не придется загружать и анализировать документ снова, если вы хотите изменить соответствующий шаблон.