首先,对于那些由于鱼腥而降低了问题的人:这就是谷歌所做的。我非常感谢他们这样做。就我们所知,这位先生或女士正在构建更好的搜索引擎,我们将从现在开始使用8年。
但是正如Rogue Coder所说:我们不应该全部这样不小心做到这一点。
关于这个问题:你不能得到一个域的标题。您可以通过将HTTP请求完成到一个URL来获取标题。
至于解决方案:你可以使用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}
嗯,这看起来不存在可疑的一切.... – 2012-07-05 19:09:20
@RogueCoder当然不是。我相信它有一个完全合法的用途。 – Lusitanian 2012-07-05 19:11:08
这对很多语言的cURL来说都是微不足道的。你遇到什么问题? – Brad 2012-07-05 19:13:35