思路:根据请求url返回的html进行处理,获取对应的信息
相关url

1、自助查询
https://www.dell.com/support/home/cn/zh/cnbsd1/
2、指定sn号查询(GET请求)
https://www.dell.com/support/home/cn/zh/cnbsd1/product-support/servicetag/ 加上sn号
3、服务器详情页面(POST请求,需要提交"serviceTag"值,可从第二个url返回的html中获取)
https://www.dell.com/support/components/dashboard/cn/zh/cnbsd1/Warranty/GetWarrantyDetails

用法

D:盘根目录创建txt文档,名为sn.txt;存入svn清单,执行后会生成snlist文件,包含sn-型号-出厂-过保日期
其他自定义目录可自行修改

import requests,re,time
from requests.exceptions import RequestException
base_url='https://www.dell.com/support/home/cn/zh/cnbsd1/product-support/servicetag/'
def Get_Page(url):      #根据sn号获取返回页面try:response = requests.get(url)if response.status_code == 200:return response.textreturn Noneexcept RequestException:return None
def Get_Info(s_code):       #根据返回码,获取信息url_params = {"serviceTag":s_code}info_url='https://www.dell.com/support/components/dashboard/cn/zh/cnbsd1/Warranty/GetWarrantyDetails'r1=requests.post(info_url,data=url_params)h1=r1.textp_date=re.compile("<td>(\d+) (\d+)月 (\d+)</td>")p_in_date=re.compile('<td><b>(.*)(\d{2}) (\d+)月 (\d+)</b></td>')date2='error'if h1:c=h1.split("\n")for i in c:if '<td>NBD' in i:              #检测下一个工作日服务(优先级以上门服务器日期为准)n=c.index(i)# date1=p_date.findall(c[n+1])date2=p_date.findall(c[n+2])elif '%s</b></td>'%sn in i:n = c.index(i)date1=p_in_date.findall(c[n+1])# print(date1)if date2=='error':             #因为服务器型号不用,包含的服务不同,所以下面做了较多的判断for i in c:if '<td>POW' in i:          #检查部件保修服务n = c.index(i)date2 = p_date.findall(c[n + 2])elif '<td>4' in i:      #检查24小时上门n = c.index(i)date2 = p_date.findall(c[n + 2])if date2=='error':date2=[('error','error','error')]   #返回错误数据in_date = ((date1[0][3] + '-' + date1[0][2] + '-' + date1[0][1]))  # 格式化日期out_date = ((date2[0][2] + '-' + date2[0][1] + '-' + date2[0][0]))else:in_date = ((date1[0][3] + '-' + date1[0][2] + '-' + date1[0][1]))  # 格式化日期out_date = ((date2[0][2] + '-' + date2[0][1] + '-' + date2[0][0]))return in_date,out_date
class DELLINFO():def __init__(self,sn):self.sn=sndef Get_Dellinfo(sn):  # 主程序html1 = Get_Page(base_url + sn)if html1:p1 = re.compile('servicetag/(.*)/overview"')p2 = re.compile('<h1 class="mb-3 mb-lg-1 text-center text-lg-left position-relative word-break">(.*)</h1>')r1 = p1.findall(html1)  # 过滤获取返回码r2 = p2.findall(html1)if r1 and len(r1) == 1:date = Get_Info(r1[0])if r2 and len(r2) == 1:server_mode = r2[0]return server_mode, datewith open('D:\sn.txt','r',encoding='utf-8') as f:for i in f:sn=i.strip()info=DELLINFO.Get_Dellinfo(sn)if len(info)==2:server_mode=info[0]server_in_date=info[1][0]server_out_date=info[1][1]info_detail=sn+'\t'+server_mode+'\t'+server_in_date+'\t'+server_out_date+'\n'print(server_mode)print(server_in_date)print(server_out_date)with open('D:snlist.txt','a',encoding='utf-8') as ff:ff.write(info_detail)

多线程版本

import requests,re,time
from requests.exceptions import RequestException
from concurrent.futures import ThreadPoolExecutor
import threading
base_url='https://www.dell.com/support/home/cn/zh/cnbsd1/product-support/servicetag/'
def Get_Page(url):      #根据sn号获取返回页面try:response = requests.get(url)if response.status_code == 200:return response.textreturn Noneexcept RequestException:return Nonedef Get_Info(s_code,sn):       #根据返回码,获取信息url_params = {"serviceTag":s_code}info_url='https://www.dell.com/support/components/dashboard/cn/zh/cnbsd1/Warranty/GetWarrantyDetails'r1=requests.post(info_url,data=url_params)h1=r1.textp_date=re.compile("<td>(\d+) (\d+)月 (\d+)</td>")p_in_date=re.compile('<td><b>(.*)(\d{2}) (\d+)月 (\d+)</b></td>')date2='error'if h1:c=h1.split("\n")for i in c:if '<td>NBD' in i:              #检测下一个工作日服务(优先级以上门服务器日期为准)n=c.index(i)# date1=p_date.findall(c[n+1])date2=p_date.findall(c[n+2])elif '%s</b></td>'%sn in i:n = c.index(i)date1=p_in_date.findall(c[n+1])# print(date1)if date2=='error':              #因为服务器型号不用,包含的服务不同,所以下面做了较多的判断for i in c:if '<td>POW' in i:          #检查部件保修服务n = c.index(i)date2 = p_date.findall(c[n + 2])elif '<td>4' in i:      #检查24小时上门n = c.index(i)date2 = p_date.findall(c[n + 2])if date2=='error':date2=[('error','error','error')]   #返回错误数据in_date = ((date1[0][3] + '-' + date1[0][2] + '-' + date1[0][1]))  # 格式化日期out_date = ((date2[0][2] + '-' + date2[0][1] + '-' + date2[0][0]))else:in_date = ((date1[0][3] + '-' + date1[0][2] + '-' + date1[0][1]))  # 格式化日期out_date = ((date2[0][2] + '-' + date2[0][1] + '-' + date2[0][0]))return in_date,out_date
def write_data(server_mode,date,sn):server_mode = server_modeserver_in_date = date[0]server_out_date = date[1]info_detail = sn + '\t' + server_mode + '\t' + server_in_date + '\t' + server_out_date + '\n'print(server_mode)print(server_in_date)print(server_out_date)with open('D:snlist.txt', 'a', encoding='utf-8') as ff:ff.write(info_detail)class DELLINFO():def __init__(self,sn):self.sn=sndef Get_Dellinfo(sn):  # 主程序html1 = Get_Page(base_url + sn)if html1:p1 = re.compile('servicetag/(.*)/overview"')p2 = re.compile('<h1 class="mb-3 mb-lg-1 text-center text-lg-left position-relative word-break">(.*)</h1>')r1 = p1.findall(html1)  # 过滤获取返回码r2 = p2.findall(html1)if r1 and len(r1) == 1:date = Get_Info(r1[0],sn)if r2 and len(r2) == 1:server_mode = r2[0]write_data(server_mode,date,sn)if __name__=='__main__':t_list = []sn_list=[]pool=ThreadPoolExecutor(10)# freeze_support()with open('D:\sn.txt','r',encoding='utf-8') as f:for i in f.readlines():sn_list.append(i.strip())t = threading.Thread(target=DELLINFO.Get_Dellinfo, args=(i.strip(),))t_list.append(t)t.start()for t in t_list:t.join()

python根据服务器sn号查询DELL服务器型号、出厂时间、过保时间相关推荐

  1. 华为服务器sn号查询网站,linux 查询服务器sn号

    linux 查询服务器sn号 内容精选 换一换 对于Linux弹性云服务器,磁盘分区与磁盘设备名称完全对应.本节以Red Hat Enterprise Linux 7的图形界面为例,介绍查询Linux ...

  2. 华为服务器sn号查询网站,linux 查询服务器sn

    linux 查询服务器sn 内容精选 换一换 Linux云服务器变更规格时,可能会发生磁盘挂载失败的情况,因此,变更规格后,需检查磁盘挂载状态是否正常.本节操作介绍变更规格后检查磁盘挂载状态的操作步骤 ...

  3. 华为服务器sn号如何修改,linux 查询服务器sn号

    linux 查询服务器sn号 内容精选 换一换 在Linux服务器安装Mind Studio后,单击界面Help>Documents,会弹出联机帮助界面,如图1所示,若单击目录后,内容无法刷新. ...

  4. 虚拟化查看服务器sn,linux 查看服务器sn号

    linux 查看服务器sn号 内容精选 换一换 该操作只在跨AZ部署HA场景下才需要执行.EVS无法实现跨AZ磁盘共享,所以在跨AZ部署HA场景中,需要规划三台弹性云服务器,在每台云服务器上各绑定一块 ...

  5. 服务器SN信息,命令查看服务器SN号

    今天工作的时候,为了检查一台服务器的序列号,没必要在跑到机房里了,所以在系统下就可以看机器序列号了.如下: 1.linux取序列号: 命令执行:dmidecode |grep "Serial ...

  6. 服务器mac地址查询修改,服务器mac地址查询修改

    服务器mac地址查询修改 内容精选 换一换 OBS Browser+是一款用于访问和管理对象存储服务的图形化工具,支持通过配置内网DNS服务器地址的方式,使在华为云上的Windows ECS通过内网直 ...

  7. dell 服务器 加ssd硬盘,DELL服务器加SSD硬盘.doc

    DELL服务器加SSD硬盘.doc (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 Dell r420服务器加SSD固态硬盘1,带 ...

  8. 戴尔服务器设置文件存储,DELL服务器RAID配置详细教程-20210730001009.pdf-原创力文档...

    DELL服务器 RAID 配置教程 在启动电脑的时候按 CTRL+R 进入 RAID 设置见面如下图 名称解释: Disk?Group :磁盘组,这里相当于是阵列,例如配置了一个 RAID5 ,就是一 ...

  9. DELL R510服务器RAID配置,Dell服务器硬RAID配置

    DELL服务器硬RAID的制作 1. 进入RAID管理界面 2. RAID创建 3. RAID删除 1. 进入RAID管理界面 服务器开机,看到Press Ctrl-C to start Dell 6 ...

  10. dell服务器报错信息,DELL 服务器LED屏报错信息 2012版

    DELL 服务器LED屏报错信息 error. Contact support E2110 置中. 请参阅内存模块一般安装原 则.请参阅获得帮助. Multibit Error on DIMM 插槽& ...

最新文章

  1. word下设置多个起始页面
  2. 我对分布式多中心架构的几点看法
  3. 如何用ABAP代码的方式弹出SPRO里的customizing activity
  4. Codeforces 1323 div2题解ABC
  5. 使用ASM 4处理Java类文件–第一部分:世界,您好!
  6. Unix/Linux环境C编程入门教程(27) 内存那些事儿
  7. 新买的衣服一定要洗吗?不洗就穿对身体不好吗?
  8. redis技术分享ppt_技术分享丨华为鲲鹏架构Redis知识二三事
  9. 在传统以太网中,为什么要有最小帧长度和最大帧长度的限制
  10. ADB命令和Monkey命令
  11. 阿里巴巴矢量图标库批量添加图标
  12. python源码剖析_Python源码剖析
  13. VMware Workstation Pro v16.1.0虚拟机下载安装过程
  14. c语言药店管理系统设计,药店管理系统
  15. 交通信息工程 实验四:交通仿真实验(一)
  16. 服务器常见基本故障+排查方法,很实用!
  17. $‘\r‘: 未找到命令的问题解决
  18. F-Train Wreck_2021牛客暑期多校训练营10
  19. 三位数求解:已知xyz+yzz=n,其中n是一个正整数,x、y、z都是数字(0-9),编写一个程序求出x、y、z分别代表什么数字。若无解,则输出“No Answer” 注意:xyz和yzz表示一个三
  20. DOM初探(14)——查看滚动条的滚动距离

热门文章

  1. Tool for FMEA
  2. 网络拓扑 令牌环网 以太网_以太网连接中网络拓扑的类型及其框架 以太网技术...
  3. iMX6 SoloX千兆以太网Linux PHY驱动调试
  4. Java多线程编程核心技术 (pdf完整版)
  5. Oracle数据库数据恢复方法
  6. 14-循环队列实现(C语言)
  7. python程序设计 清华大学出版社 pdf下载-清华大学出版社-图书详情-《Python程序设计教程》...
  8. win10主题美化(单)
  9. 中标麒麟使用centos源_中标麒麟操作系统yum源配置
  10. 如何查看文件的md5值