Powershell实现:http://www.cnblogs.com/IvanChen/p/4488246.html

今天通过Python实现:

# coding=utf-8
import re
import requests
import csv
import sys
from lxml import etree reload(sys)
sys.setdefaultencoding('utf8') summaryurl = 'https://technet.microsoft.com/en-us/library/security/mt637763.aspx'
summarycontent = requests.get(summaryurl).content
selector = etree.HTML(summarycontent)
mslist = selector.xpath('//*[@id="mainBody"]/table/tr/td[2]/p/a/text()') pattern_published_date = re.compile(r"[a-zA-Z]*?\s[0-9]*?,\s[0-9]*")
pattern_severity = re.compile(r"[a-zA-Z]*$")
pattern_kbnumber = re.compile(r"\d+")
pattern_vultype = re.compile(r"Information Disclosure|Remote Code Execution|Elevation of Privilege|Security Feature Bypass|Cumulative Security Update|Denial of Service|Tampering|Spoofing", re.I) csvfile = file('eggs.csv', 'wb')
writer = csv.writer(csvfile, dialect="excel")
writer.writerow(['Date', 'MSRC', 'KB', 'Severity', 'Version', 'Summary', 'Type']) for eachmsrc in mslist:
msrcurl = "https://technet.microsoft.com/en-us/library/security/" + eachmsrc + ".aspx"
msrc_content = requests.get(msrcurl).content
msrc_selector = etree.HTML(msrc_content) published_date = msrc_selector.xpath('//*[@id="pubInfo"]/p[1]/text()')
kbnumber = msrc_selector.xpath('//*[@id="mainBody"]/h2/text()')
severity = msrc_selector.xpath('//*[@id="content"]/div[2]/h1/text()')
version = msrc_selector.xpath('//*[@id="pubInfo"]/p[2]/text()')
summary = msrc_selector.xpath('//*[@id="mainBody"]/div[3]/div/p[1]/text()')
vultype = msrc_selector.xpath('string(//*[@id="mainBody"]/div[3]/div)')
ft_published_date = re.search(pattern_published_date, published_date[0]).group()
ft_kbnumber = re.search(pattern_kbnumber, kbnumber[0]).group()
ft_severity = re.search(pattern_severity, severity[0].strip('\n ')).group()
ft_version = version[1]
ft_summary = summary[0]
ft_vultype = re.search(pattern_vultype, vultype)
if ft_vultype:
writer.writerow([ft_published_date, eachmsrc, ft_kbnumber, ft_severity, ft_version, ft_summary, ft_vultype.group()])
else:
vultype = msrc_selector.xpath('string(//*[@id="mainBody"]/div[position()>3]/div/table)')
ft_vultype = re.search(pattern_vultype, vultype)
writer.writerow([ft_published_date, eachmsrc, ft_kbnumber, ft_severity, ft_version, ft_summary, ft_vultype.group()])
csvfile.close()

从网页上抓取Windows补丁信息然后整型输出(Python)的更多相关文章

  1. 从网页上抓取Windows补丁信息然后整型输出(PowerShell)

    $report = [pscustomobject]@{'Date' = $null; 'MSRC' = $null; 'KB' = $null; 'Severity' = $null; 'Versi ...

  2. python爬虫抓取哈尔滨天气信息(静态爬虫)

    python 爬虫 爬取哈尔滨天气信息 - http://www.weather.com.cn/weather/101050101.shtml 环境: windows7 python3.4(pip i ...

  3. Android登录client,验证码的获取,网页数据抓取与解析,HttpWatch基本使用

    大家好,我是M1ko.在互联网时代的今天,假设一个App不接入互联网.那么这个App一定不会有长时间的生命周期,因此Android网络编程是每个Android开发人员必备的技能.博主是在校大学生,自学 ...

  4. Java广度优先爬虫示例(抓取复旦新闻信息)

    一.使用的技术 这个爬虫是近半个月前学习爬虫技术的一个小例子,比较简单,怕时间久了会忘,这里简单总结一下.主要用到的外部Jar包有HttpClient4.3.4,HtmlParser2.1,使用的开发 ...

  5. 爬虫---selenium动态网页数据抓取

    动态网页数据抓取 什么是AJAX: AJAX(Asynchronouse JavaScript And XML)异步JavaScript和XML.过在后台与服务器进行少量数据交换,Ajax 可以使网页 ...

  6. Python爬虫实战---抓取图书馆借阅信息

    Python爬虫实战---抓取图书馆借阅信息 原创作品,引用请表明出处:Python爬虫实战---抓取图书馆借阅信息 前段时间在图书馆借了很多书,借得多了就容易忘记每本书的应还日期,老是担心自己会违约 ...

  7. 教您使用java爬虫gecco抓取JD全部商品信息

    gecco爬虫 如果对gecco还没有了解可以参看一下gecco的github首页.gecco爬虫十分的简单易用,JD全部商品信息的抓取9个类就能搞定. JD网站的分析 要抓取JD网站的全部商品信息, ...

  8. python写的爬虫工具,抓取行政村的信息并写入到hbase里

    python的版本是2.7.10,使用了两个第三方模块bs4和happybase,可以通过pip直接安装. 1.logger利用python自带的logging模块配置了一个简单的日志输出 2.get ...

  9. FakeLogonScreen抓取Windows凭证

    FakeLogonScreen抓取Windows凭证 实践中使用的配置 攻击者: 操作系统: Kali Linux 2020.1 IP: 192.168.1.13 目标: 作业系统: Windows ...

随机推荐

  1. migration integer limit option

    https://gist.github.com/stream7/1069589 :limit Numeric Type Column Size Max value 1 tinyint 1 byte 1 ...

  2. 【JSOI2007】麻将 bzoj 1028

    Description 麻 将是中国传统的娱乐工具之一.麻将牌的牌可以分为字牌(共有东.南.西.北.中.发.白七种)和序数牌(分为条子.饼子.万子三种花色,每种花色各有一到 九的九种牌),每种牌各四张 ...

  3. 【MySQL】使用Length和Cast函数计算TEXT类型字段的长度

    背景: 前段时间,业务需要,为了快速让解析的Excel入库,所以把不是很确定的字段全部设置成了TEXT. 今天需要进行表结构优化,把字段长度控制在合适的范围,并尽量不使用TEXT类型. -- 计算长度 ...

  4. Spring Data JPA @EnableJpaRepositories配置详解

    @EnableJpaRepositories注解用于Srping JPA的代码配置,用于取代xml形式的配置文件,@EnableJpaRepositories支持的配置形式丰富多用,本篇文章详细讲解. ...

  5. js框架设计1.4类型判断

    这篇司徒大神介绍了很多js的 不靠谱类型判断.篇幅也是第一篇中最常的 ,经阅读后,以后一定要用框架的自带的类型判断,万万不可随便乱用js原生判断.

  6. C++ 判断字符串是否全是数字

    在实际的工作中,需要提取程序中的字符串信息,但是程序中经常将一些数字当做字符串来进行处理,例如表盘的刻度信息,这时候就需要判断字符串是否全为数字,来进行真正意义上的字符串提取.下面介绍了判断字符串是否 ...

  7. linux下动态链接库解决方案(二)

    以前写过一个关于linux下用c++写动态链接库无法通过的解决方案,今天看到<linux C程序设计-王者归来>这本书,书中有个更容易的解决方案,特此记录下来 书中使用的是c语言,我改用c ...

  8. Markdown的简单实用

    Markdown Markdown是一种标记语言,能让笔者像写代码代码一样写文档,不用再为文档的排版样式而费心.

  9. 与你相遇好幸运,mocha接口测试

    var rest = require('restler');var assert = require("assert");var systemID;var userID; cons ...

  10. 【leetcode】Majority Element

    题目概述: Given an array of size n, find the majority element. The majority element is the element that ...