Преобразование и проверка URL из ненадежного источника

#java #url #html-parsing

#java #url #html-синтаксический анализ

Вопрос:

Я анализирую веб-страницу и собираю hrefs. Поскольку веб-страница является ненадежным источником, она может содержать ссылки с недопустимым синтаксисом или символами, отличными от ascii. Итак, как я понимаю, мне нужно

1) преобразование пробелов и символов, отличных от ascii, а также других символов

2) проверьте строку, созданную на шаге 1 (критерии допустимости: этот URL можно ввести в браузере, и он сможет получить страницу, представленную url, такой URL может быть создан конструкторами URL / URI и затем получена соответствующая страница — я могу ввести некоторые URL в Firefox, но не могу создать экземпляры в java)

3) создайте java.net.URL /URI из (1), если он допустим

Я нашел две библиотеки проверки: 1 и 2 (какую из них вы предпочитаете?) но нет адекватной библиотеки для первого предложения (такие инструменты, как java.net .URLDecoder / URLEncoder) не предназначены для этой цели.

Ответ №1:

Разве вы не можете просто попытаться создать URL / URI из него в инструкции try / catch? Я думаю, что конструктор класса обрабатывает проверку автоматически

Комментарии:

1. Что вам нужно преобразовать?!

2. > «преобразовать пробелы и символы, отличные от ascii, а также другие символы». Вы можете ввести URL в адресной панели браузера, и он будет автоматически преобразован в действительный URL, но если вы попытаетесь создать URI / URL с помощью соответствующих конструкторов, вы можете получить исключение IllegalSyntaxException.

3. Конструктор new URL (String) может выдавать только исключение MalformedURLException; это когда не указан http: // или что-либо еще. Он позаботится обо всем остальном!?