#!/usr/bin/env python3

 # -*- coding: UTF-8 -*-

 from bs4 import BeautifulSoup
import operator
import os,shutil
import re def processhtml(item):
  html_path = item
  with open(html_path) as fp:
    soup = BeautifulSoup(fp, "html.parser")
  return soup def IsComputer(soup_arg):
  soup = soup_arg
  result = False
  try:
    value = soup.find('input', {'name':'资源类型'}).get('value')
    if value == '主机':
      print('资源类型:主机')
      result = True
    elif value == '数据库':
      print('资源类型:数据库')
    else:
      print('资源类型:其他')
  except:
    pass
  return result def IsAgree(soup_arg):
  soup = soup_arg
  result = False
  try:
    for row in soup.findAll('tr'):
      cells = row.findAll('td')
      if len(cells) == 4:
        if cells[1].findChild("font") != None:
          nStr = ""
          nStr = nStr.join(cells[0].string)
          target = ['帐号管理人员处理']
          if (operator.eq(nStr.split(), target)):
            print(cells[1].font.string)
          if (operator.eq(nStr.split(), target) and cells[1].font.string == '同意'):
            print("满足条件为:%s && 审批意见(同意)" % nStr.split()[0])
            result = True
  except IndexError as e:
    pass
  return result def IsIntersect(soup_arg):
  soup = soup_arg
  result = False
  try:
    value = soup.find('input', {'name':'239385_资源名称'}).get('value')
    temp_list = re.split('[、:\n]', value)
    hosts_list = []
    hosts_list.clear()
    for hostlist in temp_list:
      if re.search('[a-z]', hostlist):
        print(hostlist)
        hosts_list.append(hostlist)
    hosts_set = set(hosts_list)
    if target_hosts.intersection(hosts_set):
      print('非空,有交集')
      result = True
    else:
      print("空,无交集")
  except:
    pass
  return result def IsIntersect2(soup_arg):
  soup = soup_arg
  result = False
  try:
    value = soup.find('input', {'name':'所在的硬件设备/软件平台'}).get('value')
    temp_list = re.split('[、:\n]', value)
    hosts_list = []
    hosts_list.clear()
    for hostlist in temp_list:
      if re.search('[a-z]', hostlist):
        hosts_list.append(hostlist)
    hosts_set = set(hosts_list)
    if target_hosts.intersection(hosts_set):
      print('非空,有交集')
      result = True
    else:
      print("空,无交集")
  except:
    pass
  return result if __name__ == '__main__':
  target_hosts = {'cmszsoaa', 'cmszsoab', 'cmszdcss', 'cmszicss', 'cmsznpsa', 'cmsznpsb', 'cmszinta', 'cmszintb',
          'cmszdpsa', 'cmszdpsb', 'mcbsoaa', 'mcbsoab', 'mcbinta', 'mcbintb', 'mcbdpsa', 'mcbdpsb',
          'mcbnpsa', 'mcbnpsb', 'mcbdcss', 'mcbicss', 'newdcss', 'newicss'}   work_dir = '/root/XmlOut/'
  target_dir = '/root/AccountOut/'   for parent, dirnames, filenames in os.walk(work_dir, followlinks=True):
    for filename in filenames:
      file_path = os.path.join(parent, filename)
      print("filename with full path: %s" % file_path)
      soup = processhtml(file_path)
      flag1 = IsComputer(soup)
      flag2 = IsAgree(soup)
      flag3 = IsIntersect(soup)
      flag4 = IsIntersect2(soup)
      if (flag1 and flag2 and (flag3 or flag4)):
        print('%s, ok----' % (file_path))
        shutil.copy(file_path, target_dir)

解析HTML文件的更多相关文章

  1. Android 解析XML文件和生成XML文件

    解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...

  2. CSharpGL(9)解析OBJ文件并用CSharpGL渲染

    CSharpGL(9)解析OBJ文件并用CSharpGL渲染 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码中包含10多个独立的Demo ...

  3. Jsoup系列学习(2)-解析html文件

    解析html文件 1.当我们通过发送http请求时,有时候返回结果是一个html格式字符串,你需要从一个网站获取和解析一个HTML文档,并查找其中的相关数据.你可以使用下面解决方法: 使用 Jsoup ...

  4. JAVA使用SAX解析XML文件

    在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...

  5. JAVA中使用DOM解析XML文件

    XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...

  6. CSharpGL(5)解析3DS文件并用CSharpGL渲染

    CSharpGL(5)解析3DS文件并用CSharpGL渲染 我曾经写过一个简单的*.3ds文件的解析器,但是只能解析最基本的顶点.索引信息,且此解析器是仿照别人的C++代码改写的,设计的也不好,不方 ...

  7. php解析.csv文件

    public function actionImport() { //post请求过来的 $fileName = $_FILES['file']['name']; $fileTmpName = $_F ...

  8. java中采用dom4j解析xml文件

    一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...

  9. 使用XStream解析MXL文件用到的jar包---xpp3_min-1.1.3.4.O.jar和xstream-1.3.1.jar

    使用XStream解析MXL文件用到的jar包---xpp3_min-1.1.3.4.O.jar和xstream-1.3.1.jar

  10. XML:使用DOM技术解析xML文件中的城市,实现select级联选择

    中国的城市xml格式:cities.xml <?xml version="1.0" encoding="utf-8"?> <china> ...

随机推荐

  1. 使用 Spring Social 连接社交网络

    Spring Social 框架是spring 提供社交平台的分享组件 https://www.ibm.com/developerworks/cn/java/j-lo-spring-social/

  2. 回顾Google IO 2016 -Keynote【图解】

    Google IO大会倒计时进行中~~ 两名演奏者在使用高空“古筝”. 最后5秒倒计时~~~~全场轰动~ 倒计时结束,IO大会正式开始.屏幕中,一个人把纯白的唱片放入唱片机中. 然后欢快的音乐响起,台 ...

  3. codeforces_734C_二分

    C. Anton and Making Potions time limit per test 4 seconds memory limit per test 256 megabytes input ...

  4. mysql存储过程之遍历多表记录后插入第三方表中

    自从学过存储过程后,就再也没有碰过存储过程,这是毕业后写的第一个存储过程. 因为项目里设备的种类比较多,分别存在不同的数据表中,java中对应不同的java bean对象,想要统一管理有点困难.最近正 ...

  5. Python 之12306网站验证码校验案例

    import requests from PIL import Image import jsons requests.packages.urllib3.disable_warnings() head ...

  6. Photoshop如何实现图片相对画布居中

    先按ctrl+A,再选择要居中的图层,然后就会发现居中按钮被激活了

  7. 学不好Python?我们分析看看正确的学习方法是什么-马哥教育

    提起对Python的印象,除了全能之外恐怕就是简单易学了.很多人都在推荐新手学Python入门,毕竟语法简单.语句简洁,所谓“人生苦短我用Python”绝不是一句空话.不过也不能忽视一点:Python ...

  8. iptables详解(4):iptables匹配条件总结之一

    所属分类:IPtables  Linux基础 在本博客中,从理论到实践,系统的介绍了iptables,如果你想要从头开始了解iptables,可以查看iptables文章列表,直达链接如下 iptab ...

  9. =、==、is、id(内容)

    = 赋值 == 比较值是否相等 is 比较.比较的是内存地址 id(内容) 测出内存地址

  10. redis环境部署

    运维开发技术交流群欢迎大家加入一起学习(QQ:722381733) 一.Redis服务介绍: redis简单来讲就是一个数据库,一个用来存储缓存的数据库容器,主要是让项目数据能写进缓存,为用户提搞更舒 ...