工作中写的,算是经验的一点积累,我个人觉得也没啥太隐私的东西,放到博客中,有需要的小伙伴可以看看找找思路。刚开始学了几天就写的,大神勿吐槽。
#!/usr/bin/env python # -*- coding: utf-8 -*- #2018/04/27 import requests from bs4 import BeautifulSoup import re # 第一个页面获取版本号,然后提供选择。 def get_patch(): url = 'http://www.catalog.update.microsoft.com/Search.aspx?q=' + KB content = requests.get(url).content soup = BeautifulSoup(content, 'html.parser') data = str(soup) data1 = re.findall('\n.* \(KB\d{7}\)', data) #输出到界面用于选择版本 data2 = re.findall('goToDetails\("(.*)"\)',data) #后台生成url需要的数据 i = len(data1) for i in range(i): print "获取到的版本分别为:%s" % (str(i) + '.' + data1[i].strip().replace('\n','')) print "请输入你需要的版本编号(0 - %s):" % i input_number = raw_input("") return data2[int(input_number)] # 获取第二个页面的替换与被替换关系 def get_patch_info(c): url = 'http://www.catalog.update.microsoft.com/ScopedViewInline.aspx?updateid='+ c content = requests.get(url).content soup = BeautifulSoup(content, 'html.parser') data = str(soup) data5 = re.findall("updateid=.*",data) #获取补丁对应的网址数据,有updateid的是data3 len1 = len(data5) data2 = re.findall("KB\d{7}",data)#这个是网页里所有的kb号,没有updateid的是data4,第一个为上一层的kb号 data3 = data2[1:len1] data4 = data2[len1:] print "本次输入的补丁包对应的版本被%s替换了" % data3 print "本次输入的补丁包对应的版本替换了%s" % data4 return data5 # 循环调用 def get_patch_newest(): for i in data1: data5 = re.findall("updateid=(.*)\">", i) get_patch_info(data5[0]) if __name__ == '__main__': # KB = 'KB4052978' KB = raw_input('请输入kb号:') print "获取补丁信息开始:%s" % KB data1 = get_patch_info(get_patch()) get_patch_newest()可能有个小知识点就是函数的循环调用。