Краулер, сканирующий заданный url и извлекающий ссылки, затем рекурсивно следующий по ранее извлеченным ссылкам. Скрипт собирает простые ссылки не только со всего сайта, но так же извлекает ссылки, выполняя javascript с помощью библиотеки selenium. Входной параметр -m указывает количество прохождений вглубь по извлеченным ссылкам, по умолчанию 5. Все найденные ссылки храняться в файле txt в папке output. Протестировано на Ubuntu 20.04 и Windows 10 20H2
Важно Скрипт имеет вычислительную сложность O(n), что при больших значениях -m увеличивает время работы. Так же при сканировании крупных сайтов, может быть затрачено больше времени.
- Python 3.8.1
- beautifulsoup4 4.9.3
- colorama 0.4.4
- requests 2.25.1
- requests-html 0.10.0
- selenium 3.141.0
- selenium-wire 4.3.1
Создаем виртальную среду:
python -m venv env
Активируем виртуальную среду:
# для win 10
.\env\Scripts\activate
# для Linux
source /env/bit/activate
Инсталлируем зависимости:
pip install -r requirements.txt
Далее необходимо в файле parser_link_js.py в переменной osdriver указать вебдрайвер в зависимости от операционной системы
# для Linux
osdriver = r'./drivers/geckodriver'
# для win10
osdriver = r'./drivers/geckodriver.exe'
Затем активируем сам скрипт, где https://example.com url для работы краулера, а параметр m указывает на количество :
python main.py https://example.com -m 10
После запуска краулера в командной строке синим цветом будут отображаться внешние ссылки, зеленым - внутренние. Красным цветом будут выведены ошибки произошедшие при парсинге. По завершению работы выведется итоговая информация по сканированию.