我的项目要求我验证大量的Web URL.这些URL已被一个我无法控制的非常不可靠的进程捕获.所有的URL都已经过regexp验证,并且已知格式正确.我也知道他们都有有效的TLD
我希望能够快速过滤这些网址,以确定哪些网址不正确.此时我并不关心页面上的内容是什么 - 我只想尽快知道哪些页面不可访问(例如产生404错误).
鉴于有很多这些我不想下载整个页面,只是HTTP标头,然后从标题的内容中好好猜测页面是否可能存在.
可以吗?
要真正做到这一点,您可能还会使用使用非阻塞IO的eventlet来加快速度.
您可以使用这样的头部请求:
from eventlet import httpc try: res = httpc.head(url) except httpc.NotFound: # handle 404
然后,您可以将其放入一些简单的脚本,例如此处的示例脚本.有了它,你应该通过使用协同程序池获得相当多的并发性.
我假设您希望根据您的标签在Python中执行此操作.在那种情况下,我会使用httplib.(可选)以某种方式按主机对URL进行分组,以便您可以在一个连接中为具有相同主机的URL发出多个请求.使用HEAD请求.
conn = httplib.HTTPConnection("example.com") conn.request("HEAD", "/index.html") resp = conn.getresponse() print resp.status