python如何批量同时检测网址可用性?
前言
随着站点的增多,管理复杂性也上来了,俗话说:人多了不好带,我发现站点多了也不好管,因为这些站点里有重要的也有不重要的,重要核心的站点当然就管理的多一些,像一些万年都不出一次问题的,慢慢就被自己都淡忘了,冷不丁那天出个问题,还的手忙脚乱的去紧急处理,所以规范的去管理这些站点是很有必要的,今天我们就做第一步,不管大站小站,先统一把监控做起来,先不说业务情况,最起码那个站点不能访问了,要第一时间报出来,别等着业务方给你反馈,就显得我们不够专业了,那接下来我们看看如果用python实现多网站的可用性监控,脚本如下:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/usr/bin/env python
import pickle, os, sys, logging
from httplib import HTTPConnection, socket
from smtplib import SMTP
def email_alert(message, status):
fromaddr = 'xxx@163.com'
toaddrs = 'xxxx@qq.com'
server = SMTP('smtp.163.com:25')
server.starttls()
server.login('xxxxx', 'xxxx')
server.sendmail(fromaddr, toaddrs, 'Subject: %s
%s' % (status, message))
server.quit()
def get_site_status(url):
response = get_response(url)
try:
if getattr(response, 'status') == 200:
return 'up'
except AttributeError:
pass
return 'down'
def get_response(url):
try:
conn = HTTPConnection(url)
conn.request('HEAD', '/')
return conn.getresponse()
except socket.error:
return None
except:
logging.error('Bad URL:', url)
exit(1)
def get_headers(url):
response = get_response(url)
try:
return getattr(response, 'getheaders')()
except AttributeError:
return 'Headers unavailable'
def compare_site_status(prev_results):
def is_status_changed(url):
status = get_site_status(url)
friendly_status = '%s is %s' % (url, status)
print friendly_status
if url in prev_results and prev_results[url] != status:
logging.warning(status)
email_alert(str(get_headers(url)), friendly_status)
prev_results[url] = status
return is_status_changed
def is_internet_reachable():
if get_site_status('www.baidu.com') == 'down' and get_site_status('www.sohu.com') == 'down':
return False
return True
def load_old_results(file_path):
pickledata = {}
if os.path.isfile(file_path):
picklefile = open(file_path, 'rb')
pickledata = pickle.load(picklefile)
picklefile.close()
return pickledata
def store_results(file_path, data):
output = open(file_path, 'wb')
pickle.dump(data, output)
output.close()
def main(urls):
logging.basicConfig(level=logging.WARNING, filename='checksites.log',
format='%(asctime)s %(levelname)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
pickle_file = 'data.pkl'
pickledata = load_old_results(pickle_file)
print pickledata
if is_internet_reachable():
status_checker = compare_site_status(pickledata)
map(status_checker, urls)
else:
logging.error('Either the world ended or we are not connected to the net.')
store_results(pickle_file, pickledata)
if __name__ == '__main__':
main(sys.argv[1:])
脚本核心点解释:
1、getattr()是python的内置函数,接收一个对象,可以根据对象属性返回对象的值。
2、compare_site_status()函数是返回的是一个内部定义的函数。
3、map() ,需要2个参数,一个是函数,一个是序列,功能就是将序列中的每个元素应用函数方法。
总结
以上就是这篇文章的全部内容,有需要的朋友们可以参考借鉴。
1. 用Python封装被测试接口,对于HTTP接口我们通常会采用 GET和POST 2种调用方式去访问,所以必须把这2种方式都封装进去 # -*- coding:gb2312 -*- import urllib2,urllib ''' 函数说明:url 特殊字符编码转换 作者:xiaonan 输入参数:待转换的字...
多线程,目前的运行时间是由网络返回时间决定的,如果你访问的网址不是来自一个网址,没有并发访问数限制,就可以用多线程来提高同时访问的网址数,运行总时间就不是一个串联关系了。不会的话百度一下学习一下就OK了。数据大就上多进程+异步
tornado的asynchttpclient最好,也可以requesrs多线程
python怎么自动批量读取文件夹下的excelpython批量读取文件
Python批量读取特定文件夹下Excel的话,主要分为2步,首先根据后缀名(xls或xlsx)匹配出所有Excel文件,然后直接利用相关模块(pandas,openpyxl等)读取即可,下面我简单介绍一下实现过程,感兴趣的朋友可以尝试一下:01 查找所有Excel文件 这一步非常简单,主要是根据后缀名匹配所有Excel文件,基本思路先使用os...
python使用os批量读取、删除、修改、保存文件的操作
在Python数据处理中,批量操作文件是常见的需求。本文将指导你如何使用os模块实现文件的批量删除、修改和保存操作。假设我们要对文件夹A进行操作,首先,我们来准备一些数据。文件夹A中有若干文件,其中txt文件的内容如下:...读取文件时,通过os.listdir()函数遍历文件夹中的所有文件,输出如下:...(输出...
Python办公神器:教你使用Python批量修改Word样式
首先,通过导入os、glob和docx模块,我们可以开始操作。如果你还未安装docx,可以在命令行中安装。然后,创建一个空文件夹,用于存放修改后的文档,以防止对原文件直接修改。接着,使用glob获取目标文件夹(例如"reports")中所有扩展名为.docx的文件路径。接下来,使用Document类逐个打开Word文档,找到包含...
趣味学Python,用Python如何批量做表格,openpyxl库!
首先,openpyxl是一个专门用于处理xlsx\/xlsm\/xltx\/xltm格式Excel文件的Python库,安装后即可进行操作。例如,我们能创建新文件,如budget.xlsx,添加“收入”和“支出”到A1和B1单元格。接着,学会读取已有文件,如budget.xlsx,获取并分析数据。通过代码,我们可以加载文件并读取A1和B1的数据。修改文件也是...
Python批量合并多个txt文件,生成Excel文件详解
首先,确保你手头有若干txt文件,比如data1.txt、data2.txt和data3.txt,它们需要有相同的结构。Python的Pandas库是数据处理的强大工具,对于txt文件的合并和Excel文件的生成尤为便捷。使用Pandas,你可以借助pd.concat()函数,无论数据结构如何,都能灵活地整合各个txt文件的内容。如果需要定制化处理,比如...
Python大批量的修改文件名
但相信我,重复这样的操作会让您的手指颤抖不已。这时,使用 Python 编写脚本成为一种高效且便捷的选择。首先,创建一个文件夹并在其中生成 10 个 .txt 文件。接下来,创建一个 .py 文件并编写以下代码:接下来,我们来逐步解析这段代码:这段代码清晰简洁,只需运行即可自动批量修改文件名。现在,让...
如何用python批量改文件名
介绍如何用python批量改文件名,并附带几个小例子 基本程序 引入os模块(python中操作文件的模块)。定义修改名称的函数rename。 在rename函数中定义一个储存路径的变量path,并将要修改文件名的文件夹的路径赋值给该变量。继续向函数中添加功能代码 最后调用这个rename函数这个脚本就写完了。执行这个文件,...
python如何进行批量注释
python批量注释的两种方法:选中要注释的代码,使用【Ctrl+\/】快捷键多行注释;将需要注释的部分代码用三个双引号或者三个多引号括起来多行注释。python中怎么注释多行:方法一:先选中要注释的段落,然后按下“ctrl+\/”,即可实现多行代码的注释。效果如下:请点击输入图片描述再一次按下“ctrl+\/”就...
如何在ArcGIS中使用Python批量裁剪栅格数据?
实际上,Python的灵活性使其在大量重复任务中表现出色。要进行批量裁剪,可以将上述基本步骤融入循环结构,例如使用for循环遍历包含多个栅格数据和对应裁剪区域的列表,这样就可以高效地完成大量数据的处理。如果你正在寻找更具体的Python实现示例,可以参考以下资源:如如何在Python中运用条件语句和循环语句处理...
python如何进行批量除法?
打开一个文本编辑器(例如Notepad++或Visual Studio Code),将代码复制粘贴到编辑器中。修改dividend和divisors的值为您想要的被除数和除数。将修改后的代码保存为一个以.py为扩展名的文件,例如batch_division.py。打开终端或命令提示符,导航到保存代码的文件夹目录。运行代码:在终端中输入python batch_...
戢徐坤宁: #coding:utf-8 #author:www.chenhaifei.com import requests #打开 import time,random #控制时间 import sys #专门乱码的 reload(sys) sys.setdefaultencoding('utf-8') headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) ...
兴和县15880358045: 如何通过Python实现批量检测HTTP服务的状态 - ?
戢徐坤宁: 1. 用Python封装被测试接口,对于HTTP接口我们通常会采用 GET和POST 2种调用方式去访问,所以必须把这2种方式都封装进去 # -*- coding:gb2312 -*- import urllib2,urllib ''' 函数说明:url 特殊字符编码转换 作者:xiaonan 输入参数:待转换的字...
兴和县15880358045: python 一次抓多个网页 - ?
戢徐坤宁: 1、网络爬虫基本原理 传统爬虫从一个或若干初始网页的url开始,获得初始网页上的url,在抓取网页的过程中,不断从当前页面上抽取新的url放入队列,直到满足系统的一定 停止条件.聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算...
兴和县15880358045: 如何实现python读取txt多个网站操作 - ?
戢徐坤宁: import syssyslen=len(sys.argv)res=[]for i in range(1,syslen): with open(sys.argv[i]) as f: res+=f.readlines()print respython test.py a01.txt a02.txt a03.txt a04.txt这样使用
兴和县15880358045: python实现批量ping 如何去写 - ?
戢徐坤宁: 新建两个文本文件,一个保存为test.bat,一个保存为test.txt,两文件保存在一个文件夹下 test.txt的内容 192.168.0.29 127.1 test.bat的内容 @echo off echo 正在ping网址,请稍候…… for /f %%i in (test.txt) do ping %%i /n 10 >>hello.txt s
兴和县15880358045: 如何通过python获取到网站的所有url - ?
戢徐坤宁: 可以通过2113正则表达式5261匹配出来的4102,网址的正1653则版表达式:权([\w-]+\.)+[\w-]+.([^a-z])(/[\w-: ./?%&=]*)?|[a-zA-Z\-\.][\w-]+.([^a-z])(/[\w-: ./?%&=]*)?
兴和县15880358045: python爬虫怎么获取到的网站的所有url - ?
戢徐坤宁: 首先我们可以先获取要下载图片的整个页面信息. getjpg.py #coding=utf-8 import urllibdef getHtml(url):page = urllib.urlopen(url)html = page.read()return htmlprint html Urllib 模块提供了读取web页面数据的接口,我们可以像读取本地文件一样...
兴和县15880358045: 怎么用Python从多个网址中爬取内容? - ?
戢徐坤宁: 调用 requests 包 , BeautifulSoup4包, 能实现,网页内容写入 excel 不太好看,建议写入 txt 或者 xml.确定要写入 Excel 可以调用 pandas包或者 openpyxl包
兴和县15880358045: 我想写一个批量python登录网站,并且登录后指定一个网址判断网页是否是我想要的东西,把我 - ?
戢徐坤宁: 我们将会按照以下步骤进行:提取登录需要的详细信息 执行站点登录 爬取所需要的数据 在本教程中,我使用了以下包(可以在 requirements.txt 中找到):requests lxml 步骤一:研究该网站 打开登录页面 进入以下页面 “”.你会看到如下图所...
兴和县15880358045: python 爬虫 怎么爬多个网站数据 - ?
戢徐坤宁: 这种情况我自己还没有试过,只是借助爬虫框架pyspider结合PhantomJS,这样就可以在python里面嵌入一些js代码,实现点击,下拉等操作啦.