首先,对于那些因为可疑而拒绝投票的人:这就是谷歌所做的。我非常感谢他们这样做。据我们所知,这位先生或女士正在构建更好的搜索引擎,我们将在 8 年后使用。
但正如 Rogue Coder 所说:我们不应该都粗心大意地做这件事。
关于问题:您无法获取域的标题。您从完成对 URL 的 HTTP 请求获得标头。
至于解决方案:您可以将 python 与许多可用的 http 库之一一起使用,例如内置的 httplib。由于请求量很大,您将需要使用线程来并行发出多个请求。下面的例子太简单了。在现实生活中,您将使用线程池。此外,拥有许多同时连接会带来其自身的问题。所以:你希望它有多快?
import httplib
from threading import Thread
import time
hosts = [ 'www.google.com', 'www.yahoo.com', 'nos.nl' ]
responses = {}
class StatusChecker(Thread):
def __init__(self, hostname):
Thread.__init__(self)
self.hostname = hostname
def run(self):
conn = httplib.HTTPConnection(self.hostname)
conn.request("HEAD", "/index.html")
res = conn.getresponse()
responses[self.hostname] = res.status
if __name__ == "__main__":
for h in hosts:
StatusChecker(h).start()
time.sleep(10)
print responses
这将给出类似的东西:
$ python test.py
{'nos.nl': 200, 'www.yahoo.com': 301, 'www.google.com': 200}