通过 Python 检查网站是否正常
By using python, how can I check if a website is up? From what I read, I need to check the "HTTP HEAD" and see status code "200 OK", but how to do so ?
Cheers
Related
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(16)
您可以尝试使用 urllib 中的
getcode()
来执行此操作a>对于 Python 2,使用
You could try to do this with
getcode()
from urllibFor Python 2, use
我认为最简单的方法是使用 Requests 模块。
I think the easiest way to do it is by using Requests module.
您可以使用 httplib
打印
当然,前提是
www.python.org< /code> 已启动。
You can use httplib
prints
Of course, only if
www.python.org
is up.适用于 Python 3
Works on Python 3
我使用 requests 来实现这一点,这样就很简单而且干净。
您可以定义和调用新函数(通过电子邮件等通知),而不是打印函数。 Try- except 块是必不可少的,因为如果主机无法访问,那么它将引发很多异常,因此您需要捕获所有异常。
I use requests for this, then it is easy and clean.
Instead of print function you can define and call new function (notify via email etc.). Try-except block is essential, because if host is unreachable then it will rise a lot of exceptions so you need to catch them all.
您可以使用
requests
库来查找网站是否已启动,即状态代码
为200
You may use
requests
library to find if website is up i.e.status code
as200
模块可能会为您解决问题。顺便说一句,如果您开始在 Python 中使用 HTTP 进行任何高级操作,请务必查看HTTPConnection
对象标准库中的 >httplibhttplib2< /代码>
;这是一个很棒的图书馆。
The
HTTPConnection
object from thehttplib
module in the standard library will probably do the trick for you. BTW, if you start doing anything advanced with HTTP in Python, be sure to check outhttplib2
; it's a great library.如果服务器宕机,在 python 2.7 x86 windows 上 urllib 没有超时并且程序会死锁。所以使用urllib2
If server if down, on python 2.7 x86 windows urllib have no timeout and program go to dead lock. So use urllib2
在我看来,caisah的回答错过了您问题的一个重要部分,即处理服务器离线的问题。
尽管如此,使用
requests
是我最喜欢的选择,尽管是这样的:In my opinion, caisah's answer misses an important part of your question, namely dealing with the server being offline.
Still, using
requests
is my favorite option, albeit as such:如果“up”只是指“服务器正在提供服务”,那么您可以使用 cURL,如果收到响应,则说明“服务器正在运行”。
我无法给你具体的建议,因为我不是 python 程序员,但是这里有一个 pycurl http:// /pycurl.sourceforge.net/。
If by up, you simply mean "the server is serving", then you could use cURL, and if you get a response than it's up.
I can't give you specific advice because I'm not a python programmer, however here is a link to pycurl http://pycurl.sourceforge.net/.
您好,此类可以使用此类对您的网页进行速度和速度测试:
Hi this class can do speed and up test for your web page with this class:
请求 和 httplib2 是不错的选择:
如果使用 Ansible,您可以使用 fetch_url 函数:
Requests and httplib2 are great options:
If using Ansible, you can use the fetch_url function:
我的 2 美分
my 2 cents
这是我使用 PycURL 和 验证器
Here's my solution using PycURL and validators
有时某些网站在某些国家/地区(例如伊朗)被禁止,您无法直接使用您的 IP 访问它们。因此,我在 此链接 中找到了更好的解决方案,使用 https://www.isitdownrightnow.com 通过世界上多个分布式服务器请求您的域。所以你可以使用这段代码:
sometimes some sites are forbidden in some countries (like Iran) and you can't access them directly with your ip. So I found better solution in this link that checks your domain with https://www.isitdownrightnow.com that requests your domain with several distributed servers in the world. So you can use this code: