测试大量格式良好的URL的有效性的最快方法是什么

Sal*_*ley 2 python http

我的项目要求我验证大量的Web URL.这些URL已被一个我无法控制的非常不可靠的进程捕获.所有的URL都已经过regexp验证,并且已知格式正确.我也知道他们都有有效的TLD

我希望能够快速过滤这些网址,以确定哪些网址不正确.此时我并不关心页面上的内容是什么 - 我只想尽快知道哪些页面不可访问(例如产生404错误).

鉴于有很多这些我不想下载整个页面,只是HTTP标头,然后从标题的内容中好好猜测页面是否可能存在.

可以吗?

MrT*_*opf 7

要真正做到这一点,您可能还会使用使用非阻塞IO的eventlet来加快速度.

您可以使用这样的头部请求:

from eventlet import httpc
try:
    res = httpc.head(url)
except httpc.NotFound:
    # handle 404
Run Code Online (Sandbox Code Playgroud)

然后,您可以将其放入一些简单的脚本,例如此处的示例脚本.有了它,你应该通过使用协同程序池获得相当多的并发性.


Jef*_*eff 6

我假设您希望根据您的标签在Python中执行此操作.在那种情况下,我会使用httplib.(可选)以某种方式按主机对URL进行分组,以便您可以在一个连接中为具有相同主机的URL发出多个请求.使用HEAD请求.

conn = httplib.HTTPConnection("example.com")
conn.request("HEAD", "/index.html")
resp = conn.getresponse()
print resp.status
Run Code Online (Sandbox Code Playgroud)