Wget Spider сайт, чтобы собрать все ссылки - PullRequest
0 голосов
/ 02 октября 2018

Я пытаюсь сделать паук на этом сайте до глубины = 2 и собрать все ссылки (URL).Простая задача, но она кажется невозможной, и я должен что-то упустить?Я не получаю URL только пустой текстовый файл.Вот последняя команда, которую я использую (насколько я знаю):

wget --spider --force-html --span-hosts --user-agent = "Mozilla / 5.0 (X11; Fedora;Linux x86_64; rv: 52.0) Gecko / 20100101 Firefox / 52.0 "-np --limit-rate = 20k -e роботов = выключено --wait = 3 - случайное ожидание -r -l2 https://en.wikibooks.org/wiki/C%2B%2B_Programming 2>& 1 |grep '^ -' |awk '{print $ 3}' |grep -v '. (css \ | js \ | png \ | gif \ | jpg) $' |сортировать |uniq> urls.txt

Есть идеи?

1 Ответ

0 голосов
/ 12 октября 2018

Я бы посоветовал вам сделать это в 2 шага, лучше читаемость и меньше беспорядка.

  1. Сделайте паутинку и получите вывод в лог-файл.
  2. Разбор лог-файлачтобы получить URL-адреса, которые вы ищете.

Для # 1 -

wget --spider --force-html --span-hosts --user-agent = "Mozilla / 5.0 (X11; Fedora; Linux x86_64; rv: 52.0) Gecko / 20100101 Firefox / 52.0" -np --limit-rate = 20k -e robots = off --wait = 3 --random-wait -r-l2 https://en.wikibooks.org/wiki/C%2B%2B_Programming -o wget.log &

Как только # 1 закончен, вы можете перейти к # 2.

Для # 2 -

grep http wget.log |grep -v "[следует]" |awk '{print $ 3}' |grep -vE ".css | .js | .png | .gif | .jpg" |sort -u> urls.txt

Это даст вам то, что вы ищете.

Обратите внимание, что # 1 будет загружать все, что он найдет, и, поскольку вы углубляетесь на 2 уровня, это может быть много данных.Вы можете использовать опцию --delete-after с wget, если вы не хотите загружать все (то есть, если вы планируете использовать urls.txt для загрузки материала)

...