工作中写的,算是经验的一点积累,我个人觉得也没啥太隐私的东西,放到博客中,有需要的小伙伴可以看看找找思路。刚开始学了几天就写的,大神勿吐槽。

#!/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()
可能有个小知识点就是函数的循环调用。
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐