таким образом, у меня есть файлы HTML, которые имеют определенную часть, я хотел бы извлечь. Эти адреса HTML находятся в текстовом файле. Демонстрационная веб-страница HTML, взятая из этого текстового файла, была бы похожа на это, и я захочу получить часть 009514HB.JPG, который отличается для каждого файла HTML.
Мой .txt файл был бы чем-то вроде этого -
https://www.dermquest.com/image-library/image/5044bfd0c97267166cd653c8
https://www.dermquest.com/image-library/image/5044bfcfc97267166cd61ff4
https://www.dermquest.com/image-library/image/5044bfd0c97267166cd6310a
https://www.dermquest.com/image-library/image/5044bfd0c97267166cd6310b
https://www.dermquest.com/image-library/image/5044bfcfc97267166cd61ff5
https://www.dermquest.com/image-library/image/5044bfd0c97267166cd64278
https://www.dermquest.com/image-library/image/5044bfcfc97267166cd61ff6
https://www.dermquest.com/image-library/image/5044bfcfc97267166cd61ff7
https://www.dermquest.com/image-library/image/5044bfd0c97267166cd63c1b
https://www.dermquest.com/image-library/image/5044bfcfc97267166cd619b1
https://www.dermquest.com/image-library/image/5044bfcfc97267166cd619b4
https://www.dermquest.com/image-library/image/5044bfcfc97267166cd625a3
https://www.dermquest.com/image-library/image/5044bfd0c97267166cd64844
https://www.dermquest.com/image-library/image/5044bfcfc97267166cd619ba
https://www.dermquest.com/image-library/image/5044bfd0c97267166cd63ce3
https://www.dermquest.com/image-library/image/5044bfd0c97267166cd64437
https://www.dermquest.com/image-library/image/5044bfd1c97267166cd67203
и если я нажимаю открытую из тех страниц HTML с помощью текстового редактора, я могу найти информацию, в которой я нуждаюсь..
*** some code here***
<figure>
<a href="/imagelibrary/large/009514HB.JPG" target="_blank" class="preview-image"><img src="/imagelibrary/medium/009514HB.JPG" alt="acne keloidalis nuchae"/></a>
</figure>
...
Теперь я хотел бы получить эти числа из различных файлов HTML и затем добавить эти числа к https://www.dermquest.com/imagelibrary/large
. Например, я хотел бы, чтобы мой финал txt файл имел URL, которые похожи на это, [немного NSFW] https://www.dermquest.com/imagelibrary/large/009514HB.JPG
Эта строка была бы легче для меня к wget изображения! Я не знаю много о SED или AWK, таким образом, любой вид совета/справки был бы большим.
Спасибо!
tl; доктор: ссылки указывают на веб-страницу не на изображение, поэтому когда я wget, я загружаю страницы HTML, а не изображения, которые я хочу. Это - то, как я думаю, что мог сделать это, но любые лучшие решения будут полезны также!
В зависимости от сложности входных файлов я предлагаю не пытаться проанализировать HTML с awk
, grep
и такой, но использовать синтаксический анализатор HTML. Для подобных задач я использую рысь, браузер текстового режима. Устанавливать его простое sudo apt install lynx
достаточно. Затем:
for file in *.html; do
lynx -dump -listonly -nonumbers $file >> links.txt
done
Для Вашего демонстрационного отрывка это создает следующий вывод:
file:///imagelibrary/large/009514HB.JPG
При выполнении, file://
часть должна быть заменена надлежащим базовым URL:
sed -i 's|file://|https://www.dermquest.com|' links.txt
Результат:
https://www.dermquest.com/imagelibrary/large/009514HB.JPG
Разламывание его на ступает, Вы хотите:
*.html
?). <a href="/imagelibrary/large/009514HB.JPG" ...
.009514HB.JPG
").Произведите текст с помощью части имени файла.
find . -type f -name '*.html' -print0 | \
xargs -0 -r grep --no-filename "a href=" | \
grep -E -o '[0-9A-Z]+\.JPG'
Затем путем обертывания вышеупомянутого внутри a for $()
создайте, мы добираемся:
for i in $( find . -type f -name '*.html' -print0 | \
xargs -0 -r grep --no-filename "a href=" | \
grep -E -o '[0-9A-Z]+\.JPG'
) ; do
echo "https://www.dermquest.com/imagelibrary/large/$i"
done
Конечно, читать man find
, man xargs
, man grep
.