Необходимо создать одностраничный сайт, содержащий форму ввода с текстовым полем, в которое можно ввести url сайта, и после отправки формы - вывести контент страницы на которую ведет введенный url, удалив оттуда весь javascript и css. Все ссылки выделить курсивом, а слова длиннее 5 букв выделить жирным.
Для развёртки потребуются Python 3.6.4, virtualenv.
$ git clone https://github.com/Spacehug/sdns_test_case.git
$ cd sdns_test_case
$ virtualenv venv
$ source venv/Scripts/activate
$ cd django
$ pip install -r requirements.txt
Содержимое requirements.txt:
django==2.0.1
requests==2.18.4
lxml==4.1.1
coverage==4.4.2 # Для тестов
В папке django:
$ python manage.py runserver
Миграции делать не нужно - база данных не используется, страница /admin/ выключена, модели User и Group - разрегистрированы.
Опять же, в папке django:
$ python -m coverage run manage.py test apps.pageparser.tests -v 2
На данный момент тестами покрыто 92% кода (всё, кроме POST-запроса).
Coverage поддерживает html-отчёты, чтобы их получить можно воспользоваться командой
$ python -m coverage html
Получившийся отчёт будет лежать в папке htmlcov
- Относительные ссылки с целевого сайта сделаны абсолютными, чтобы обеспечить работоспособность с нашей страницы.
- Проект всеяден в плане кодировки (закономерное исключение - японский и другие языки, в которых нет пробелов, на страницах с этими языками "слова" выделяются по пунктуации).
- Проект нормально работает с XHTML страницами.
- Благодаря requests, проект нормально работает со сжатыми в GZip страницами.
- Слова внутри ссылок выделены и жирным, и курсивом.
- На сайтах встречаются другие кодировки, например на ерц66.рф - cp1251. Можно написать обработку для таких случаев.
- Добавить обработку ссылок, в href которых абсолютный, неправильно сформированный URL. Иногда встречается на страницах википедии.
- Можно повысить живучесть против страниц с неправильно сформированным html.