Любой способ обнаружить опечатки URL в Python? - PullRequest
1 голос
/ 22 июня 2011

Моя программа на Python включает переход на предоставленный пользователем URL-адрес и последующую работу на странице.В идеале, неправильно напечатанные URL-адреса будут распознаны и появится сообщение об ошибке.Но если они имеют правильный синтаксис и просто нигде не указывают, то вместо этого загружается либо страница с ошибкой интернет-провайдера, либо рекламный сайт.

Например:

"http://washingtonn.edu" -> http://search5.comcast.com/?cat=dnsr&con=dsqcy&url=washingtonn.edu

"http://www.amazdon.com/" -> http://www.amazdon.com/

Есть ли способ обнаружить их, не зная всех возможных страниц?Второй может быть довольно сложным, потому что это настоящий сайт, но я был бы рад поймать первый.

Спасибо!

Ответы [ 4 ]

3 голосов
/ 22 июня 2011

Если я не неправильно понимаю ваш вопрос, то, что вы просите, невозможно, не имеет смысла или далеко не тривиально.

Если вы думаете об этом, кроме ошибки 404, где выобнаружить, что страница не существует, если страница существует, нет способа узнать, является ли страница «хорошей» или «плохой», поскольку это субъективно.Может быть возможно применить некоторые общие правила, но вы не можете охватить все возможности.

Единственным способом было бы что-то вроде того, что Google делает с предложениями, но это подразумевало бы огромную базу данных ссписок популярности веб-сайтов, и тестируйте каждый раз на предмет близости, но это далеко за тривиальным и, вероятно, не нужно.

Для обработки 404 статутов в Python вы можете использовать lie httplib .

Удачи!

1 голос
/ 22 июня 2011

То, о чем вы говорите, это эвристика, и это на самом деле очень сложная тема. У вас может быть список общих веб-сайтов и типичные ошибки - если что-то не удается разрешить (например, 404 HTTP-ответ), проверьте входные данные по списку и выберите «ближайший» ответ (это целый алгоритм сам по себе). Это не было бы слишком надежно, потому что сайт с ошибкой может действительно разрешить правильно (хотя и для непреднамеренного домена).

действительно простое решение, если вы очень обеспокоены ошибочными URL-адресами, просто дважды запросите URL.

1 голос
/ 22 июня 2011

Вы можете проверить код состояния HTTP ваших запросов.Вероятно, наиболее интересным для вас является статус 404 - Not Found.Во втором случае вы правы - если ответ является веб-страницей, вы не можете знать, хотел ли пользователь этого или опечатка

0 голосов
/ 22 июня 2011

Вы можете использовать регулярное выражение для проверки правильности URL-адреса, а также использовать httplib для проверки кодов ответов и требовать 200 для продолжения.

HTTPConnection.getresponse () вернет 200, если URL действителен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...