分享:网页文件内容查找小工具

2022年3月8日 2,924 浏览数 没有评论

因工作需要,要将包含某些“关键词”的网页文件从磁盘中查找出来。在网上找了很久都没有找到顺手的工具,所以就动手写了一个。“独乐乐不如众乐乐”,分享给大家。Python语言初级,见笑了!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import os,re
 
#获取当前目录下所有文件名及目录名
def pri_all_file(dir):
    names = os.listdir(dir) 
    li = []
    extension = ['.shtml','.html','.htm'] #定义要查找的文件类型
    for name in names:
        full_name = os.path.join(dir,name) #拼接成完整路径
        if os.path.isdir(full_name):
            #li.append(full_name)
            li.extend(pri_all_file(full_name)) #递归遍历子目录下文件及目录,并一次性加入原列表中
        else:
            #print(full_name)
            if os.path.splitext(name)[-1] in extension: #取文件扩展名进行比较
                li.append(full_name)
    return li
 
#将列表中的内容一行行写入文件
def write_result_file(result):
    ls = os.linesep #行分隔符
    filename = "result.txt" #保存结果的文件,在.py文件所在的目录中
    try:
        fobj = open(filename,'w')
    except IOError as e:
        print("file open error:",e)
    else:
        fobj.writelines('%s%s' % (txt,ls) for txt in result)
        fobj.close()
 
#程序主体
if __name__ == "__main__":
    dir_name = '/wwwroot' #定义要查找的文件夹
    keyword = ['张三' ,'李四'] #定义要查找的关键词
    findfilelist = [] #找到的文件列表
    filelist = pri_all_file(dir_name)
    for filepath in filelist:
        f = open(filepath, encoding='utf-8')
        try:
            t = f.read()
        except:
            f = open(filepath, encoding='gbk', errors='ignore')
            t = f.read()
        f.close()
        pattern = re.compile('<body[\s\S]*?</body>', re.IGNORECASE) #定义一个取出body内容的正则表达式,忽略大小写
        result = pattern.findall(t)  #进行匹配,找到所有满足条件的
        content = "".join(result) #列表转化为字符串
        if len(content) != 0:
            for k in keyword: #循环关键词
                if content.find(k) != -1:
                    print('\r[%s] %s' % (k,filepath))
                    findfilelist.append('['+k + '] ' + filepath) #找到则输出文件地址
                    # if os.path.isfile(filepath): #判断是否是为文件(文件是否存在)
                    #     os.rename(filepath, filepath + '_bak') #修改文件名
 
        print('\r%s' % (filepath), end = '')
 
    write_result_file(findfilelist) #将查找结果写入result.txt文件中
分类: 伪编程 标签: ,