有没有办法在python中检测错误的URL?

时间:2011-06-22 03:43:32

标签: python error-handling web

我的python程序涉及到用户提供的URL,然后在页面上执行操作。理想情况下,会识别输入错误的网址并弹出错误。但如果他们拥有正确的语法并且不指向任何地方,则会加载ISP错误页面或广告网站。

例如:

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

“http://www.amazdon.com/” - > http://www.amazdon.com/

有没有办法在不知道所有可能的页面的情况下检测这些?第二个可能很难,因为它是一个真实的网站,但我很乐意捕捉第一个。

谢谢!

4 个答案:

答案 0 :(得分:3)

除非我误解你的问题,否则你所要求的是不可能的,没有意义,或者远非微不足道。

如果您考虑它,除了404错误,您检测到页面不存在,如果页面确实存在,则无法知道页面是“好”还是“坏”,因为这是主观。可能会应用一些一般规则,但你不能拥抱所有的可能性。

唯一的方法就是谷歌对这些建议所做的事情,但这意味着一个庞大的数据库,其中列出了网站的受欢迎程度,并且每次都要测试接近度,但这远远超出了微不足道的程度,可能没有必要。

要在python中处理404法规,​​你可以使用谎言httplib

祝你好运!

答案 1 :(得分:1)

您可以查看HTTP status code您的请求。可能对你最有趣的是404 - Not Found状态。在第二种情况下,你是对的 - 如果回复是一个网页,你不知道用户想要的是什么或是一个错字

答案 2 :(得分:1)

你所说的是启发式,它实际上是一个非常复杂的话题。您可以拥有一个常见网站和常见拼写错误列表 - 如果某些内容无法解决(即404 HTTP响应),请检查列表中的输入,并选择“最接近”的答案(这是一个完整的算法)。虽然它不太可靠,因为拼写错误的网站确实可以正确解析(尽管到了非预期的域)。

一个非常简单的解决方案,如果您非常关心拼写错误的网址,只需要两次查询网址。

答案 3 :(得分:0)

您可以使用正则表达式检查有效的网址,还可以使用httplib检查响应代码并要求200继续。

如果网址有效,HTTPConnection.getresponse()将返回200