检查网页状态的最快方法是什么?

时间:2014-01-09 22:13:19

标签: python performance mechanize urllib python-requests

我正在尝试使用Python检查网页的状态。我做过测试的计时器,但没有什么比另一个好得多。最差和最好的只相差20%。我真的只需要响应代码,而不是HTML源代码。我将处理3个响应代码:200,403,404。

方法1是我的,但其他人在这里找到:Checking if a website is up via Python

方法1 :现在,我正在使用mechanize来尝试打开网址,除了。如果它是200,它将会很好但如果它是403/404,它将运行除外。这很好用,但速度不是很快。平均速度为0.00276

方法2 :使用urllib,我和python大致相同。平均速度为0.00227。这是代码,它只是一个班轮。

print urllib.urlopen("http://www.stackoverflow.com").getcode()

方法3 :我认为这种httplib方法速度最快,但它只检查域名,不检查域名的各个页面,因此在我的情况下不起作用。代码是:

conn = httplib.HTTPConnection("www.python.org")
conn.request("HEAD", "/")
r1 = conn.getresponse()
print r1.status, r1.reason

方法4 :此方法使用requests.head,平均速度为0.00246。代码是:

r = requests.head("http://www.stackoverflow.com")
print r

有没有人知道在python中检查网页状态的更有效方法?

1 个答案:

答案 0 :(得分:2)

你提到的三个图书馆很好地涵盖了所有直接选项。 Requests.py可能是#4候选人。

请注意,当请求使用URLLib3时,Mechanize会包装URLLib2。

作为对问题的评论,这些都是成熟的图书馆,因此您可能不太可能在其他图书馆中找到性能改进或通过重新实现自己。

尽管如此,如果这是你的目标,那么这可能就是你的目标。