解析HTML文件
#!/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文件的更多相关文章
- Android 解析XML文件和生成XML文件
解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...
- CSharpGL(9)解析OBJ文件并用CSharpGL渲染
CSharpGL(9)解析OBJ文件并用CSharpGL渲染 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码中包含10多个独立的Demo ...
- Jsoup系列学习(2)-解析html文件
解析html文件 1.当我们通过发送http请求时,有时候返回结果是一个html格式字符串,你需要从一个网站获取和解析一个HTML文档,并查找其中的相关数据.你可以使用下面解决方法: 使用 Jsoup ...
- JAVA使用SAX解析XML文件
在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...
- JAVA中使用DOM解析XML文件
XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...
- CSharpGL(5)解析3DS文件并用CSharpGL渲染
CSharpGL(5)解析3DS文件并用CSharpGL渲染 我曾经写过一个简单的*.3ds文件的解析器,但是只能解析最基本的顶点.索引信息,且此解析器是仿照别人的C++代码改写的,设计的也不好,不方 ...
- php解析.csv文件
public function actionImport() { //post请求过来的 $fileName = $_FILES['file']['name']; $fileTmpName = $_F ...
- java中采用dom4j解析xml文件
一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...
- 使用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
- XML:使用DOM技术解析xML文件中的城市,实现select级联选择
中国的城市xml格式:cities.xml <?xml version="1.0" encoding="utf-8"?> <china> ...
随机推荐
- Java class对象说明 Java 静态变量声明和赋值说明
先看下JDK中的说明: java.lang.Object java.lang.Class<T> Instances of the class Class represent cla ...
- 认识 java JVM虚拟机选项 Xms Xmx PermSize MaxPermSize 区别
点击window---->preferences---->配置的tomcat---->JDK,在Optional Java VM arguments:中输入 -Xmx512M -Xm ...
- c#仿照qq登录界面编辑框内容操作
using System; using System.Drawing; using System.Windows.Forms; namespace 案例演示 { public partial clas ...
- cstring 转 string
都通过基本类型来转换即可:CString可以转换为基本类型LPCTSTR,LPCTSTR根据项目编码可以是const char*或者const wchar_t*:string可以用c_str()转换为 ...
- 基于vue的nuxt框架cnode社区服务端渲染
nuxt-cnode 基于vue的nuxt框架仿的cnode社区服务端渲染,主要是为了seo优化以及首屏加载速度 线上地址 http://nuxt-cnode.foreversnsd.cngithub ...
- 5.2.2 re模块方法与正则表达式对象
Python标准库re提供了正则表达式操作所需要的功能,既可以直接使用re模块中的方法,来实现,也可以把模式编译成正则表达式对象再使用. 方法 功能说明 complie(pattern[,flagss ...
- 【[Offer收割]编程练习赛13 B】最大子矩阵(自己的思路)
[题目链接]:http://hihocoder.com/contest/offers13/problem/2 [题意] [题解] 算出1..250*250这些数字每个数字的所有因子(成对的那种,即x* ...
- 【BestCoder Round #93 1001】MG loves gold
[题目链接]:http://acm.hdu.edu.cn/showproblem.php?pid=6019 [题意] 每次选择一段连续的段,使得这一段里面没有重复的元素; 问你最少选多少次; [题解] ...
- play snake on windows
今天和人吃晚饭突然想起来 之前西佳佳老师说小学期会要求两星期撸一个小游戏 有人已经撸完一个俄罗斯方块了... 菜逼我决定从最简单的贪吃蛇玩起... 我是直接参考的这个博客 算是相当简单而且很Low的实 ...
- hdu 3605 最大流sap+二进制思想(啊啊)
/*因为n非常大如果正常建边的话会超内存,每种状态的数目共2--10种状状体记录起来,源点与状态建边权值为状态数,状态与星球建边,星球与汇点建边*/ #include<stdio.h> # ...