Как я могу получить URL-адреса из файла HTML? - PullRequest
3 голосов
/ 15 февраля 2011

Мне нужно получить длинный список действительных URL-адресов для тестирования моего DNS-сервера.Я обнаружил, что на веб-странице есть множество ссылок, которые, вероятно, дадут достаточно хороших ссылок (http://www.cse.psu.edu/~groenvel/urls.html),), и я подумал, что самый простой способ сделать это - загрузить файл HTML и просто выполнить поиск URL-адресов.Однако я не могу заставить его перечислять мои результаты только по ссылке.

Я знаю, что есть много способов сделать это. Я не привередлив, как это делается.

Учитывая приведенный выше URL, я хочу получить список всех URL-адресов (по одному в строке), например:

http://www.cse.psu.edu/~groenvel/
http://www.acard.com/
http://www.acer.com/
...

Ответы [ 2 ]

7 голосов
/ 15 февраля 2011

Метод 1

Шаг 1:

wget "http://www.cse.psu.edu/~groenvel/urls.html"

Шаг2:

perl -0ne 'print "$1\n" while (/a href=\"(.*?)\">.*?<\/a>/igs)' /PATH_TO_YOUR/urls.html | grep 'http://' > /PATH_TO_YOUR/urls.txt

Просто замените " / PATH_TO_YOUR / " на путь к файлу. Это даст текстовый файл только с URL.

Метод 2

Если у вас установлен lynx, вы можете просто сделать это за 1 шаг:

Шаг1:

lynx --dump http://www.cse.psu.edu/~groenvel/urls.html | awk '/(http|https):\/\// {print $2}' > /PATH_TO_YOUR/urls.txt

Метод 3

Использование curl:

Step1

curl http://www.cse.psu.edu/~groenvel/urls.html 2>&1 | egrep -o  "(http|https):.*\">" | awk  'BEGIN {FS="\""};{print $1}' > /PATH_TO_YOUR/urls.txt

Метод 4

Использование wget:

wget -qO- http://www.cse.psu.edu/~groenvel/urls.html 2>&1 | egrep -o  "(http|https):.*\">" | awk  'BEGIN {FS="\""};{print $1}' > /PATH_TO_YOUR/urls.txt
1 голос
/ 15 февраля 2011

вам нужен wget, grep, sed. Я попробую решение и обновлю свой пост позже.

Обновление:

wget [the_url];

cat urls.html | egrep -i '<a href=".*">' | sed -e 's/.*<A HREF="\(.*\)">.*/\1/i'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...