Любой способ обнаружить опечатки URL в Python?

1

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

Например:

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

"http://www.amazdon.com/" → http://www.amazdon.com/

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

Благодарю!

  • 0
    Как бы вы справились с опечатками URL, такими как goolge.com ? Вы должны были бы пропинговать тонны перестановок URL-адреса и затем решить, какой из этих существующих является законным. Это не нечто отдаленно простое ИМО.
  • 2
    Что делать, если я набрал "cnn.com" как "nytimes.com"?
Теги:
website
error-handling

4 ответа

3
Лучший ответ

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

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

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

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

Удачи!

  • 0
    Это то, чего я ожидал, но, поскольку я новичок в этом, я не был уверен, был ли редирект или что-то, что могло бы их отличить.
  • 0
    @Джефф: Не совсем, некоторые перенаправляют, другие нет. Нет общего правила, применимого ко всем сайтам. Рад, что это помогло. Просто чтобы рассмотреть, жизнеспособным вариантом было бы получить, скажем, 500 лучших сайтов, и когда пользователь достаточно близок к одному из них, предложите это, но в зависимости от того, насколько хороша эта реализация, это может быть сложнее, чем код Само приложение, и, вероятно, не стоит того, учитывая ограниченный список. Это просто не имеет особого смысла. Удачи!!
1

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

  • 1
    Я думаю, что ему также нужно отключить эту надоедливую «службу» Comcast, верно?
  • 0
    Это установлено в его браузере, я думаю. Если он не проверит URL-адреса, командуя своим браузером, это не должно появиться.
Показать ещё 2 комментария
1

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

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

0

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню