博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python脚本-共享文件爬虫
阅读量:5866 次
发布时间:2019-06-19

本文共 2041 字,大约阅读时间需要 6 分钟。

hot3.png

import sqlite3, timefrom pathlib import Path# 搜索共享目录下的文件并过滤def apply_dfs(root_path, file_callback, dir_callback):    try:        [x for x in root_path.iterdir()]    except FileNotFoundError:        print("file not found:", root_path)        return    except:        print("something bad happened:", root_path)        return    for x in root_path.iterdir():        if x.is_file():            file_callback(x)        elif x.is_dir():            dir_callback(x)            apply_dfs(x, file_callback, dir_callback)        else:            pass# 过滤文件格式def process_file_path(path):    try:        if not path.suffix in acceptable:            return        cursor.execute("insert into shared_files values (?, ?)", \         (path.name, str(path).replace("\\", "/")))    except:        returndef process_dir_path(path):    passdef format_host(host):    host = str(host)    while len(host) < 3:        host = "0" + host    return host# main functionconn = sqlite3.connect("share.db")cursor = conn.cursor()acceptable = (".txt", ".doc", ".docx", ".ppt", ".pptx", ".xls", ".xlsx", \              ".pdf", ".rar", ".zip", ".tar", ".gz", ".bz2", ".xz", ".7z", \              ".msg", ".exe", ".msi")for host in range(445,999):    start = time.time()    p = Path(r"\\hostnameprex" + format_host(host) + "/share")    print("start crawling host:hostnameprex",format_host(host))    apply_dfs(p, process_file_path, process_dir_path)    end = time.time()    print("complete crawling:", format_host(host), \          "elasped time:", end - start, "s")    conn.commit()conn.close()

查询脚本:

import sqlite3 as dbimport os#查询数据库def query(name):  #创建连接  conn = db.connect("share.db")  #获取游标  sqlite_cursor = conn.cursor()  sql_select="SELECT * FROM shared_files where filename like ?;"    sqlite_cursor.execute(sql_select,('%'+name+'%',))   for row in sqlite_cursor:          print(row[0]+""+row[1])  conn.close()# 入口while True :  keyword = input('please input keyword:')  if keyword != '':      query(keyword)      break

转载于:https://my.oschina.net/hanhanztj/blog/482445

你可能感兴趣的文章
什么是DDOS攻击?怎么防御?
查看>>
状态模式(State Pattern)
查看>>
log4j日志框架学习
查看>>
function 与 => 的区别
查看>>
面试题:缓存Redis与Memcached的比较 有用
查看>>
EXCEL自动撤销合并单元格并填充相应内容(转帖)
查看>>
Python3学习笔记10-条件控制
查看>>
Nginx 1.2.6 稳定版发布
查看>>
黄聪:如何使用CodeSmith批量生成代码(原创系列教程)
查看>>
HDOJ---1421 搬寝室[DP]
查看>>
JS 中的== 与 ===
查看>>
ES6 - 收藏集 - 掘金
查看>>
13.11. this is incompatible with sql_mode=only_full_group_by
查看>>
Python Module_openpyxl_处理Excel表格
查看>>
css动画实现div内图片逆时针旋转
查看>>
CSS的工作过程
查看>>
为什么码农要了解业务?
查看>>
微软整合实验(七):布署Exchange2010 Mailbox高可用(DAG)
查看>>
spring定时器----JobDetailBean
查看>>
我的友情链接
查看>>