json格式如何解析器,想要进行Java培训?
可以先预习一下课程啊
Java从入门到精通学习路线图
目前Java在许多行业的客户端方面的应用非常多,比如OA、邮箱、投票、金融、考试、物流、医疗、矿山等信息方面的系统。Java开发者在这方面的需求也非常大,待遇也相当不错,工资水平可能和Java互联网方向的差不多,但福利和前途则非常好,因为这类工作基本上是政府事业单位及大型企业提供的。
对于java学习,一套专业系统的java学习路线图是不可少的,千锋老师全力打造,让你从入门到精通实现系统化!
第一阶段:Java基础
第一部分Java开发介绍
1. DOS常用命令
2. JVM、JRE、JDK之间的关系
3. Java开发环境的搭建:安装JDK,配置环境变量
4. Java入门程序(Java的开发流程)
5. Java的注释,标识符、标识符的命名规范
6. Java基本数据类型
7. 变量和常量的定义及初始化
8. Java的运算符
9. 运算符的优先级
10. Java分支语句之if...else
11. 循环的嵌套
12. 方法的定义
13. 方法的形参和实参
14. 方法的压栈
15. 方法的递归调用
第二部分Java数组
1. Java 数组的定义
2. Java 数组的声明
3. 数组的优势与局限
4. 数组的动态初始化
5. 数组的存储特点(堆和栈)
6. 数组的遍历访问(普通循环,增强for循环)
7. 数组元素的顺序查找
8. 数组元素的二分法查找
9. 数组元素的选择排序
10. 数组元素的冒泡法排序
11. Arrays工具类的使用
12. 二维数组的介绍
13. 二维数组的声明与初始化
14. 二维数组的遍历
15. 二维数组的使用
第三部分Java面向对象
1. 面向对象设计思想
2. 面向对象的分析与设计
3. Java与面向对象
4. 类中成员变量的定义与意义
5. 构造方法的定义和调用
6. 面向对象的封装特性
7. 局部变量和成员变量的作用域问题
8. 静态属性、静态方法、静态代码块
9. 面向对象的继承特性
10. 继承中构造方法的细节
11. 面向对象的多态特性
12. 抽象方法与抽象类
13. 接口的介绍
14. 通过内部类制作性能检测工具
15. Java的内存分析
第四部分常用基础类
1. 枚举类型介绍
2. 枚举的定义
3. 结合switch-case使用枚举
4. String字符串
5. 字符串缓冲区StringBuffer和StringBuilder
6. 字符串与缓冲区的区别
7. 基本类型的包装类型
8. Date类的使用
9. SimpleDateFormat类的使用
10. Math类的使用
11. Random类的使用
12. Runtime类的使用
13. System 类的使用
14. Calendar类的使用
15. Java8新特性
第五部分集合
1. 集合的概念和作用
2. 集合和数组的区别
3. 集合框架体系介绍
4. 集合框架之Collection接口
5. 泛型的使用
6. ArrayList和LinkedList的方法使用
7. ArrayList和LinkedList各自的工作原理分析
原理分析
8. Vector和Stack使用介绍
9. 使用多种方式遍历集合
10. 迭代器的使用和工作原理
11. HashSet和LinkedHashSet各自的工作
原理分析
12. 集合框架之Map接口
13. TreeMap的方法使用和排序方式
14. 分析Set和Map之间的区别与联系
15. Collections工具类的使用
第六部分IO流
1. File类的作用
2. File类中常用方法的使用介绍
3. 使用File类操作文件和文件夹
4. 相对路径和绝对路径的介绍
5. IO流的概念和工作原理
6. IO流的分类
7. 文件流的使用
8. 转换流的使用
9. 缓冲流的使用
10. 对象流的使用
11. 内存流的使用
12. 使用不同的流实现文件内容的拷贝
13. RandomAccessFile类的使用
14. Properties类的使用
15. 装饰者设计模式
第七部分多线程
1. 进程和线程的介绍
2. 进程和线程之间的区别与联系
3. 线程实现方式之继承自Thread类
4. 线程实现方式之实现Runnable接口
5. 线程实现方式之线程池
6. 线程的生命周期
7. 线程中常用方法的使用
8. 多线程中的临界资源问题分析
9. 解决临界资源问题之同步代码块
10. 解决临界资源问题之同步方法
11. 解决临界资源问题之ReentrantLock
12. 多线程讲解和理解
13. 多线程在单例中的应用
14. 死锁介绍以及案例演示
15. 生产者与消费者设计模式
第八部分异常
1. 异常的概念
2. 异常的分类
3. 异常的理解
4. 常见异常介绍
5. 运行时异常
6. 编译时异常
7. 运行和编译异常区别
8. 异常的处理方式之捕获异常
9. 异常的处理方式之抛出异常
10. 异常的处理方式之断点调试
11. 断点调试之引导运行步骤
12. 自定义异常
13. 异常关键字处理
14. 关键字执行流程
15. 异常总结
第八部分异常
1. 异常的概念
2. 异常的分类
3. 异常的理解
4. 常见异常介绍
5. 运行时异常
6. 编译时异常
7. 运行和编译异常区别
8. 异常的处理方式之捕获异常
9. 异常的处理方式之抛出异常
10. 异常的处理方式之断点调试
11. 断点调试之引导运行步骤
12. 自定义异常
13. 异常关键字处理
14. 关键字执行流程
15. 异常总结
第九部分网络
1. 计算机网络和网络编程
2. 网络编程与网页编程的区别
3. IP地址和端口号的介绍
4. 网络通信协议的介绍
5. InetAddress类的方法使用
6. Socket通信模型的介绍
7. 使用UDP实现数据的发送和接收
8. 使用TCP实现数据的发送和接收
9. 使用TCP实现文件的上传和下载
10. 使用TCP实现多人聊天
11. URL和URLConnection使用介绍
12. URLEncoder和URLDecoder的使用介绍
13. 基于HTTP协议访问网络资源
14. Json解析
15. 基于HTTP协议实现网络文件的下载
第十部分反射
1. 反射机制的概念
2. 反射机制的作用
3. 反射机制的理解
4. Class类的使用
5. Class文件获取的三种方式
6. 获取Constructor对象
7. 获取私有Constructor对象
8. 获取Method对象
9. 获取私有Method对象
10. Constructor的使用
11. Method类的使用
12. Field类的使用
13. Modifier类的介绍
14. 反射使用练习
15. 反射机制在工厂设计模式中的应用
第二阶段:JavaWeb
第一部分HTML5
1. html概述
2. html基本标签
3. 图片标签
4. 超链接标签
5. 表格标签
6. 无序列表标签
7. 有序列表标签
8. 定义列表标签
9. div标签
10. 语义化标签
11. 表单标签
12. 语义化表单元素
13. 框架标签
14. 特殊字符
15. 综合案例
第二部分CSS3
1. CSS3简介和用途
2. CSS3书写规范
3. CSS3基本语法
4. CSS3三种使用方式
5. 标签选择器
6. Id选择器
7. Class选择器
8. 属性选择器
9. 层次选择器
10. 文字、文本属性
11. 背景、列表属性
12. 尺寸、显示、轮廓属性
13. 浮动、定位属性
14. 盒子模型
15. CSS3高级属性
第三部分JavaScript
1. JavaScript概述
2. JavaScript发展史
3. JavaScript组成
4. 数据类型
5. 运算符
6. 分支语句
7. 循环语句
8. 系统函数、自定义函数、匿名函数
9. 常见事件
10. 数组、字符串、日期对象
11. 正则表达式
12. BOM对象:window、history、location
13. DOM概念
14. DOM操作:创建、修改内容、删除
15. Css样式操作
第四部分MySQL使用
1. 数据库简介
2. MySQL的安装与使用
3. MySQL客户端和服务器配置
4. 用户权限管理
5. DDL创建数据库和表
6. 约束与外键
7. DML实现添加、修改、删除数据
8. 聚合函数、日期函数等
9. DQL简单查询
10. 排序、分组、筛选
11. 多表查询
12. 子查询
13. in和exists关键字
14. 分页查询
15. Mysql SQL语句优化介绍
第五部分JDBC连接池
1. JDBC概述
2. JDBC使用步骤
3. Connection、Statement、ResultSet接口
4. 使用JDBC 完成数据库DML操作
5. PreparedStatement对象
6. 大数据的操作
7. 批量处理与元数据
8. 事务处理
9. 隔离级别
10. 自定义连接池
11. DBCP、C3p0连接池
12. DBUtis工具类
13. QueryRunner
14. 自定义结果集处理
15. 连接池知识总结
第六部分Servlet
1. Tomcat与Eclipse的集成开发
2. 什么是Servlet
3. Servlet的进化史
4. Servlet的优化过程
5. Servlet中应用的多线程概念
6. Servlet接收客户端请求信息
7. Servlet响应客户端信息
8. Servlet的生命周期
9. 重定向写法
10. 转发写法
11. 转发和重定向区别
12. HttpServletRequest获取中文乱码问题
13. HttpServletResponse响应中文乱码问题
14. Servlet路径映射问题
15. Servlet多路径映射
第七部分JSP
1. 什么是JSP
2. JSP的内置对象
3. 透析JSP的本质
4. JSTL+EL
5. MVC介绍
6. 分层的重要性
7. Web工程中事务实现
8. Session的使用
9. Cookie的使用
10. web工程中连接池的使用
11. 实现用户的自动登录
12. 文件的上传、下载
13. 过滤器、 监听器
14. 反射、注解、泛型
15. 综合案例练习
第八部分AJAX
1. Ajax技术背景
2. Ajax技术的理解
3. XMLHttpRequest使用步骤
4. XMLHttpRequest GET/POST的区别
5. 同步请求&异步请求
6. 同步请求&异步请求的区别
7. Ajax获取不同的返回值类型
8. Ajax使用原生JavaScript和Jquery的区别
9. Ajax响应状态处理
10. JSON语法
11. Java JSON 解析
12. Java JSON 生成
13. Java JSON 第三方工具快速解析
14. JavaScript JSON转换
15. Jquery JSON转换
第九部分jQuery
1. jQuery介绍
2. jQuery版本介绍
3. jQuery对象和原生js对象介绍
4. jQuery对象和原生js对象互相转化
5. jQuery快速入门
6. jQuery语法详解
7. jQuery核心函数
8. jQuery onload处理
9. jQuery选择器
10. jQuery 文档处理
11. jQuery事件
12. jQuery遍历操作
13. jQuery自定义函数
14. jQuery动画效果
15. jQueryAJAX操作
第十部分Bootstrap
1. Bootstrap介绍
2. Bootstrap开发环境搭建
3. Bootstrap的基本模板
4. Bootstrap快速入门
5. Bootstrap组成
6. 栅格系统
7. 利用栅格系统进行移动端页面适配
8. Bootstrap全局Css样式
9. Bootstrap修改原Css样式进行自定义
10. Bootstrap的js组件
11. Bootstrap的js组件样式修改
12. 集成Bootstrapjs插件之导航条
13. 集成Bootstrapjs插件之轮播图
14. 集成Bootstrapjs插件之弹出框
15. Bootstrap进行项目整合
第三阶段:Java框架
第一部分Maven
1. Maven环境搭建
2. Maven构建项目
3. Maven本地仓库配置
4. Maven中央仓库配置
5. Maven基本概念
6. Maven基本命令介绍
7. Maven于Eclipse整合
8. Maven于Idea整合
9. Maven创建web工程
10. pom.xml、依赖管理
11. 坐标、依赖、生命周期等
12. Eclipse下的Maven使用
13. Maven中 继承、聚合
14. Maven构建SSH/SSM应用
15. 自动部署、持续集成、持续部署
第二部分Hibernate
1. Hibernate框架介绍
2. Hibernate于其他框架和DBUtil工具类对比
3. ORM思想
4. Hibernate5与JPA关系介绍
5. Hibernate.cfg.xml配置
6. hbm.xml映射文件详解
7. 主键生成策略 PO对象三种状态分析与切换
8. Hibernate5一级缓存分析与测试
9. Hibernate5高级映射技术
10. 一对多映射
11. 多对多映射
12. Hibernate5多表联合查询
13. Hibernate5延迟加载
14. Hibernate5加载策略
15. 二级缓存
第三部分Spring
1. 框架原理介绍
2. 框架环境搭建
3. 快速入门
4. 创建Bean的方式及实现原理
5. Bean种类
6. Bean生命周期
7. Bean的作用域
8. Bean的注值方式
9. SpEL
10. 整合Junit测试
11. Web项目集成Spring
12. 注解装配Bean
13. AOP思想、原理解剖
14. 传统方式实现AOP开发
15. AspectJ介绍及实现AOP开发
第四部分Spring MVC
1. Spring MVC 概述
2. 使用 @RequestMapping映射请求
3. 请求处理方法签名概述
4. 处理方法签名详细说明
5. 使用 HttpMessageConverter
6. 处理模型数据
7. 数据绑定流程剖析
8. 数据格式化
9. 数据校验
10. 视图和视图解析器
11. 处理方法的数据绑定
12. 视图和视图解析器
13. 文件上传下载
14. JSON处理
15. 拦截器
第五部分MyBatis
1. MyBatis数据框架介绍
2. MyBatis对比Hibernate框架
3. MyBatis配置、查询数据
4. MyBatis全局配置文件
5. MyBatis全局配置文件元素详细介绍
6. Mapper映射文件
7. MyBatis两种开发方式
8. MyBatis中别名配置
9. MyBatis # 和 $ 拼接参数区别
10. 关联查询,动态sql
11. MyBatis缓存机制、整合ehcache
12. MyBatis二级缓存处理
13. MyBatis、Spring、SpringMVC整合
14. 分页插件
15. MyBatis逆向工程
第六部分WebService
1. WebService简介
2. WebService主流框架
3. SOAP协议
4. WSDL讲解
5. JAX-WS
6. WebService与Spring整合
7. JAXB
8. JAX-RS
9. WebService各种调用方式
10. cxf的介绍
11. cxf+jaxws基本
12. cxf+jaxws+spring
13. cxf+JAX-RS基本
14. cxf+JAX-RS+spring
15. 综合案例
第七部分SVN
1. SVN简介
2. SVN和Git对比
3. SVN服务器搭建
4. SVN创建仓库
5. SVN创建用户以及分配权限
6. SVN签出、提交、更新
7. Eclipse整合svn插件
8. Idea整合svn插件
9. 使用SVN更新提交
10. SVN仓库分析
11. SVN协同修改&冲突解决
12. SVN代码整合注意事项
13. SVN权限管理
14. SVN数据回滚
15. TortoiseSVN
第八部分Activiti
1. 工作流介绍
2. 工作流引擎
3. 工作流使用步骤
4. BPMN2.0规范
5. Activiti5框架表结构
6. Activiti5核心组件&服务接口
7. Activiti5插件安装&整合Spring
8. 流程定义
9. 流程实例、任务、历史
10. 任务领取、流程变量
11. 排他网关、并行网关
12. 流程事件
13. 流程控制
14. 监听器
15. 简单整合shiro
第四阶段:Java + 云数据
第一部分Linux版本
1.Linux简介和安装
2.Linux和Windows的区别
3.Linux远程登录
4.Linux常用命令
5.Linux文件管理
6.Linux用户管理
7.Linux用户组管理
8.Linux磁盘管理
9.Linux系统管理
10.Linux常用文件
11.Linux JDK安装
12.Linux Tomcat安装
13.Linux MySQL安装
第二部分FastDFS
1.FastDFS简介
2.FastDFS单节点安装
3.FastDFS Tracker和Storage节点操作
4.FastDFS 配置Tracker服务器
5.FastDFS 配置Storage服务器
6.FastDFS JavaClient端 文件上传
7.FastDFS JavaClient端 文件下载
第三部分MySQL优化
1.优化数据访问
2.重构查询的方式
3.查询缓存
4.切分查询
5.MySQL索引
6.MySQL锁
7.MySQL执行计划
8.MySQL存储引擎
9.Schema与数据类型优化
第四部分Nginx反向代理
1.Nginx反向代理介绍
2.Nginx 下载和安装
3.Nginx 编译和启动、访问
4.在Linux下搭建Nginx集群
5.在Windows搭建Nginx集群
6.解决Session共享问题
第五部分Quartz 作业调度
1.Quartz作业调度简介
2.Quartz作业调度执行以及持久性
3.Quartz基本使用
4.Quartz核心类讲解
5.Quartz Trigger 触发器
6.Quartz Job&JobDetail
7.Quartz Calendars日历讲解
8.JobListener监听器和TriggerListener监听器
9.Spring整合Quartz
第六部分Redis 高性能(Key-Value)数据库
1.NoSQL 发展史简介
2.Redis 简介
3.Redis 安装以及调试
4.Redis 常用指令
5.Redis 高级使用(主从复制、哨兵模式、持久化机制)
6.Jedis的基本使用
7.SSM框架基于Redis实现缓存
8.Redis 连接单机版
9.Redis 连接单机版使用连接池
10.封装和整合Spring
11.Redis 集群搭建
第七部分Shiro 安全(权限)框架
1.Shiro功能简介
2.Shiro框架介绍
3.ShiroFilter工作原理
4.Shiro 身份认证
5.Shiro Realm以及Authenticator
6.Shiro拦截器和Permissions(授权)
7.Shiro 自定义拦截器
8.Shiro Session会话
9.Shiro RememberMe功能
10.SSM集成Shiro综合权限菜单
第八部分Lucene&Solr全文检索
1.Lucene 搜索引擎介绍
2.Lucene 中文分词器配置
3.Lucene 索引的维护包括创建、删除、修改操作
4.Lucene Query 各种查询方法
5.Lucene 高亮显示
6.Lucene Facet分面检索
7.Solr简介
8.Solr 安装和配置
9.Solr 索引库管理
10.什么是SolrCloud
11.Solr集群的系统架构
12.将搜索功能切换到集群版
第九部分Zookeeper 分布式系统
1.Zookeeper 简介
2.Zookeeper 特点
3.Zookeeper 安装和配置
4.Zookeeper数据类型
5.Zookeeper服务中操作
6.Zookeeper Wacth触发器
7.Zookeeper分布式应用
第十部分MyCAT 大数据集群
1.MyCat 简介
2.MyCat的下载和安装
3.MyCat分片配置
4.MyCat分片使用和测试
5.MyCat读写分离
6.MyCat 实现从MySQL主从复制
十一部分Dubbo实现分布式架构
1.Dubbo简介
2.单一应用框架
3.垂直应用框架
4.分布式应用框架
5.流动计算机架构
6.Dubbo 能做什么
7.Dubbo 实现原理
8.Dubbo 分布式集群模型
9.Dubbo管理控制台安装
10.Dubbo 集成 SSM
第十二部分ActiveMQ 消息队列
1.ActiveMQ简介
2.JMS简介
3.MQ 消息中间件
4.ActiveMQ 安装和使用
5.ActiveMQ 消息过滤
6.ActiveMQ 消息发布和订阅模式
7.ActiveMQ消息持久化
8.ActiveMQ与Spring 整合
第十三部分分布式事务和单点登录
1.阶段提交协议讲解
2.使用消息队列来避免分布式事务
3.如何可靠保存凭证
4.业务与消息解耦方式
5.如何解决消息重复投递的问题
6.什么是单点登录
7.单点登录技术的实现机制
第十四部分分布式框架原理(采用视频资料教学)
1.传统垂直mvc项目
2.垂直架构的缺点
3.RPC架构
4.RPC架构的核心技术点
5.RPC架构的问题
6.SOA服务化架构
7.框架设计原理
8.框架性能、可靠性、功能
9.协议栈(通信模型、协议消息定义、安全性设计)
10.服务路由
11.集群容错
第十五部分基于SpringMVC的集成单元测试MockMVC
1.Mock测试框架的介绍
2.SpringMVC Mock 配置的步骤
3.基于SpringMVC单元测试实战案例
4.基于SpringMVC+JPA单元测试实战案例
十六部分SpringBoot 快速构建JavaEE项目
1.基于SpringBoot 的thymeleaf 模板引擎
2.基于SpringBoot 多模块实战开发
3.基于SpringBoot 文件上传
4.基于SpringBoot Data Solr搜索引擎开发
5.基于SpringBoot Email邮件发送
6.基于SpringBoot 的Redis实战开发
7.基于SpringBoot 的WebSocket实战开发
8.基于SpringBoot 的ActiveMQ消息队列
Python里面有什么好用且有趣的模块?
在github 里面找到的python框架,库,软件和资源的精选列表
管理面板管理界面的库。
ajenti - 您的服务器应得的管理面板。
django-grappelli - Django Admin-Interface的皮肤。
django-suit - 替代Django管理界面(仅限非商业用途)。
django-xadmin - 直接替换Django管理员有很多好东西。
flask-admin - Flask的简单且可扩展的管理界面框架。
flower - Celery的实时监控和Web管理员。
wooey - 一个为Python脚本创建自动Web UI的Django应用程序。
算法和设计模式Python实现算法和设计模式。
algorithms - Python中数据结构和算法的最小示例。
PyPattyrn - 一个简单而有效的库,用于实现常见的设计模式。
python-patterns - Python中的一组设计模式。
sortedcontainers - SortedList,SortedDict和SortedSet类型的快速,纯Python实现。
音频用于处理音频及其元数据的库。
音频
audioread - 跨库(GStreamer + Core Audio + MAD + FFmpeg)音频解码。
dejavu - 音频指纹识别和识别。
mingus - 具有MIDI文件和播放支持的高级音乐理论和乐谱包。
pyAudioAnalysis - Python音频分析库:特征提取,分类,分割和应用
pydub - 使用简单易用的高级界面处理音频。
TimeSide - 开放式网络音频处理框架。
元数据
beets - 音乐库管理器和MusicBrainz标记器。
eyeD3 - 用于处理音频文件的工具,特别是包含ID3元数据的MP3文件。
mutagen - 处理音频元数据的Python模块。
tinytag - 用于读取MP3,OGG,FLAC和Wave文件的音乐元数据的库。
认证用于实现身份验证方案的库。
OAuth
authlib - JavaScript对象签名和加密草案实现。
django-allauth - Django的认证应用程序“正常工作”。
django-oauth-toolkit - 用于Django的OAuth 2好东西。
oauthlib - OAuth请求签名逻辑的通用且全面的实现。
python-oauth2 - 一个经过全面测试的抽象界面,用于创建OAuth客户端和服务器。
python-social-auth - 一种易于设置的社交认证机制。
JWT
pyjwt - Python中的JSON Web Token实现。
python-jose - Python中的JOSE实现。
python-jwt - 用于生成和验证JSON Web令牌的模块。
构建工具从源代码编译软件。
BitBake - 嵌入式Linux的类似make的构建工具。
buildout - 用于从多个部分创建,组装和部署应用程序的构建系统。
PlatformIO - 用于构建具有不同开发平台的代码的控制台工具。
pybuilder - 用纯Python编写的连续构建工具。
SCons - 一种软件构建工具。
内置类增强功能用于增强Python内置类的库。
dataclasses - (Python标准库)数据类。
ATTRS -置换__init__,__eq__,__repr__等样板中的类定义。
bidict - 高效,Pythonic双向地图数据结构和相关功能..
Box - 具有高级点表示法访问权限的Python词典。
DottedDict - 一个库,它提供了一种使用虚线路径表示法访问列表和dicts的方法。
CMS内容管理系统。
wagtail - 一个Django内容管理系统。
django-cms - 基于Django的开源企业CMS。
feincms - 基于Django构建的最先进的内容管理系统之一。
Kotti - 基于Pyramid构建的高级Pythonic Web应用程序框架。
mezzanine - 一个功能强大,一致且灵活的内容管理平台。
plone - 构建在开源应用服务器Zope之上的CMS。
quokka - 灵活,可扩展,小型CMS,由Flask和MongoDB提供支持。
高速缓存用于缓存数据的库。
beaker - 用于会话和缓存的WSGI中间件。
django-cache-machine - Django模型的自动缓存和失效。
django-cacheops - 一个灵活的ORM缓存,具有自动粒度事件驱动的失效。
dogpile.cache - dogpile.cache是同一作者制作的Beaker的下一代替代品。
HermesCache - 基于标记的失效和防狗效应预防的Python缓存库。
pylibmc - 围绕libmemcached接口的Python包装器。
python-diskcache - SQLite和文件支持的缓存后端,其查找速度比memcached和redis快。
ChatOps工具用于聊天机器人开发的库。
errbot - 实现ChatOps的最简单,最流行的聊天机器人。
代码分析静态分析工具,linters和代码质量检查器。请参阅:awesome-static-analysis。
代码分析
coala - 独立于语言且易于扩展的代码分析应用程序。
code2flow - 将您的Python和JavaScript代码转换为DOT流程图。
prospector - 分析Python代码的工具。
pycallgraph - 一个可视化Python应用程序的流(调用图)的库。
Code Linters
flake8 - 一pycodestyle,pyflakes和McCabe。
pylint - 完全可定制的源代码分析器。
pylama - Python和JavaScript的代码审计工具。代码格式化程序
black - Python代码格式化程序。
yapf - 谷歌的又一个Python代码格式化程序。
静态类型检查
mypy - 在编译期间检查变量类型。
pyre-check - 高性能类型检查。
静态类型注释生成器
MonkeyType - Python系统,通过收集运行时类型生成静态类型注释
命令行工具用于构建命令行应用程序的库。
命令行应用程序开发
cement - Python的CLI应用程序框架。
click - 用于以可组合方式创建漂亮命令行界面的包。
cliff - 使用多级命令创建命令行程序的框架。
clint - Python命令行应用程序工具。
docopt - Pythonic命令行参数解析器。
python-fire - 用于从绝对任何Python对象创建命令行界面的库。
python-prompt-toolkit - 用于构建强大的交互式命令行的库。
终端渲染
asciimatics - 用于创建全屏文本UI的包(从交互式表单到ASCII动画)。
bashplotlib - 在终端中制作基本图。
colorama - 跨平台彩色终端文本。
生产力工具
cookiecutter - 一个命令行实用程序,用于从cookiecutters(项目模板)创建项目。
doitlive - 终端中现场演示的工具。
howdoi - 即时编码通过命令行回答。
PathPicker - 从bash输出中选择文件。
percol - 在UNIX上为传统的管道概念添加交互式选择的风格。
thefuck - 更正以前的控制台命令。
tmuxp - 一个tmux会话管理器。
try - 一个简单的试用python包的简单CLI - 它从未如此简单。
CLI增强功能
httpie - 命令行HTTP客户端,用户友好的cURL替换。
kube-shell - 用于与Kubernetes CLI一起使用的集成shell。
mycli - 具有AutoCompletion和语法突出显示功能的MySQL终端客户端。
pgcli - Postgres CLI具有自动完成和语法突出显示功能。
saws - 增压的aws-cli。
兼容性用于从Python 2迁移到3的库。
python-future - Python 2和Python 3之间缺少的兼容层。
python-modernize - 为最终的Python 3迁移实现 Python代码的现代化。
six - Python 2和3兼容性实用程序。
计算机视觉计算机视觉图书馆。
OpenCV - 开源计算机视觉库。
pytesseract - Google Tesseract OCR的另一个包装器。
SimpleCV - 用于构建计算机视觉应用程序的开源框架。
并发和并行用于并发和并行执行的库。看到awesome-asyncio。
concurrent.futures - (Python标准库)用于异步执行callables的高级接口。
multiprocessing - (Python标准库)基于进程的并行性。
eventlet - 支持WSGI的异步框架。
gevent - 一个使用greenlet的基于协程的Python网络库。
uvloop - 超快速实现asyncio事件循环libuv。
scoop - Python中的可扩展并发操作。
结构设计用于存储和解析配置选项的库。
configobj - 带验证的INI文件解析器。
configparser - (Python标准库)INI文件解析器。
profig - 具有价值转换的多种格式的配置。
python-decouple - 严格地将设置与代码分离。
加密cryptography - 一种旨在向Python开发人员公开加密原语和配方的包。
paramiko - SSHv2协议的Python(2.6 +,3.3 +)实现,提供客户端和服务器功能。
passlib - 安全密码存储/散列库,非常高级别。
pynacl - Python绑定到网络和加密(NaCl)库。
数据分析用于数据分析的库。
Blaze - NumPy和Pandas与大数据的接口。
Open Mining - Pandas界面中的商业智能(BI)。
Orange - 通过可视化编程或脚本进行数据挖掘,数据可视化,分析和机器学习。
Pandas - 提供高性能,易于使用的数据结构和数据分析工具的库。
Optimus - 使用PySpark后端进行清理,预处理,功能工程,探索性数据分析和简单的机器学习。
数据验证用于验证数据的库。在许多情况下用于表单。
Cerberus - 轻量级和可扩展的数据验证库。
colander - 验证和反序列化通过XML,JSON,HTML表单帖子获得的数据。
Dash - 建立在Flask之上,React和Plotly针对分析Web应用程序。
真棒破折号
jsonschema - Python 的JSON Schema实现。
schema - 用于验证Python数据结构的库。
schematics - 数据结构验证。
valideer - 轻量级可扩展数据验证和适配库。
voluptuous - 一个Python数据验证库。
数据可视化用于可视化数据的库。请参阅:awesome-javascript。
Altair - Python的声明性统计可视化库。
Bokeh - Python的交互式Web绘图。
bqplot - Jupyter笔记本的交互式绘图库
ggplot - 与g的ggplot2相同的API
Matplotlib - Python 2D绘图库。
Pygal - Python SVG图表创建者。
PyGraphviz - Graphviz的 Python接口。
PyQtGraph - 交互式和实时2D / 3D /图像绘图和科学/工程小部件。
Seaborn - 使用Matplotlib进行统计数据可视化。
VisPy - 基于OpenGL的高性能科学可视化。
数据库
用Python实现的数据库。
pickleDB - Python的简单轻量级键值存储。
tinydb - 一个面向文档的小型数据库。
ZODB - Python的本机对象数据库。键值和对象图数据库。
数据库驱动用于连接和操作数据库的库。
MySQL - awesome-mysql
mysqlclient - 支持Python 3的MySQL连接器(mysql-python fork)。
PyMySQL - 与mysql-python兼容的纯Python MySQL驱动程序。
PostgreSQL - 真棒 - postgres
psycopg2 - 最受欢迎的Python PostgreSQL适配器。
queries - psycopg2库的包装器,用于与PostgreSQL交互。
其他关系数据库
pymssql - Microsoft SQL Server的简单数据库接口。
NoSQL数据库
cassandra-driver - Apache Cassandra的Python驱动程序。
happybase - 适用于Apache HBase的开发人员友好库。
kafka-python - Apache Kafka的Python客户端。
py2neo - Neo4j的restful接口的Python包装器客户端。
pymongo - MongoDB的官方Python客户端。
redis-py - Redis的Python客户端。
异步客户端
motor - MongoDB的异步Python驱动程序。
Telephus - 基于Twisted的Cassandra客户端。
txpostgres - PostgreSQL的基于Twisted的异步驱动程序。
txRedis - Redis的基于Twisted的客户端。
日期和时间处理日期和时间的图书馆。
Chronyk - 一个Python 3库,用于解析人类编写的时间和日期。
dateutil - 标准Python 日期时间模块的扩展。
delorean - 用于清除处理日期时间的不便事实的库。
moment - 用于处理日期/时间的Python库。受到Moment.js的启发。
Pendulum - Python日期时间变得简单。
PyTime - 一个易于使用的Python模块,旨在通过字符串操作日期/时间/日期时间。
pytz - 世界时区定义,现代和历史。将tz数据库引入Python。
when.py - 提供用户友好的功能,以帮助执行常见的日期和时间操作。
maya -日期时间对于人类来说,玛雅主要分析datetime数据网站。
调试工具用于调试代码的库。
类似pdb的调试器
ipdb - 启用IPython的pdb。
pdb ++ - pdb的另一个替代品。
pudb - 一个基于控制台的全屏Python调试器。
wdb - 通过WebSockets实现的不可能的Web调试器。
追踪
lptrace - 用于Python程序的strace。
manhole - 调试服务,它将接受unix域套接字连接并显示所有线程的堆栈跟踪和交互式提示。
pyringe - 能够附加到Python进程并将代码注入Python进程的调试器。
python-hunter - 灵活的代码跟踪工具包。
探查
line_profiler - 逐行分析。
memory_profiler - 监视Python代码的内存使用情况。
profiling - 交互式Python分析器。
py-spy - Python程序的采样分析器。写在Rust。
pyflame - 用于Python的ptracing profiler。
vprof - Visual Python探查器。
其他
icecream - 通过一个简单的函数调用检查变量,表达式和程序执行。
django-debug-toolbar - 显示Django的各种调试信息。
django-devserver - Django的runserver的替代品。
flask-debugtoolbar - 烧瓶的django-debug-toolbar的一个端口。
pyelftools - 解析和分析ELF文件和DWARF调试信息。
深度学习神经网络和深度学习的框架。请参阅:令人敬畏的深度学习。
caffe - 一个快速开放的深度学习框架..
keras - 一个高级神经网络库,能够在TensorFlow或Theano之上运行。
mxnet - 一个旨在提高效率和灵活性的深度学习框架。
pytorch - Python中的张量和动态神经网络,具有强大的GPU加速功能。
SerpentAI - 游戏代理框架。将任何视频游戏用作深度学习沙箱。
tensorflow - Google创建的最受欢迎的深度学习框架。
Theano - 快速数值计算的库。
DevOps工具
DevOps的软件和库。
ansible - 一个极其简单的IT自动化平台。
cloudinit - 一个多分发包,用于处理云实例的早期初始化。
cuisine - Fabric的厨师般的功能。
docker-compose - 使用Docker的快速,隔离的开发环境。
fabric - 一种用于远程执行和部署的简单Pythonic工具。
fabtools - 用于编写令人敬畏的Fabric文件的工具。
honcho - Foreman的Python克隆,用于管理基于Procfile的应用程序。
OpenStack - 用于构建私有云和公共云的开源软件。
pexpect - 在GNU期望的伪终端中控制交互式程序。
psutil - 跨平台流程和系统实用程序模块。
saltstack - 基础设施自动化和管理系统。
supervisor - UNIX的supervisor过程控制系统。
分布式计算
分布式计算的框架和库。
批量处理
PySpark - Apache Spark Python API。
dask - 用于分析计算的灵活并行计算库。
luigi - 一个帮助您构建批处理作业的复杂管道的模块。
mrjob - 在Hadoop或Amazon Web Services上运行MapReduce作业。
Ray - 用于并行和分布式Python的系统,它统一了机器学习生态系统。
流处理
faust - 一个流处理库,将想法从Kafka Streams移植到Python。
streamparse - 通过Apache Storm针对实时数据流运行Python代码。
分配用于创建发布分发的打包可执行文件的库。
dh-virtualenv - 构建和分发virtualenv作为Debian包。
Nuitka - 将脚本,模块,包编译到可执行文件或扩展模块。
py2app - 冻结Python脚本(Mac OS X)。
py2exe - 冻结Python脚本(Windows)。
PyInstaller - 将Python程序转换为独立的可执行文件(跨平台)。
pynsist - 构建Windows安装程序的工具,安装程序将Python本身捆绑在一起。
文档用于生成项目文档的库。
sphinx - Python文档生成器。
awesome-sphinxdoc
pdoc - Epydoc替换为自动生成Python库的API文档。
pycco - 文字编程风格的文档生成器。
下载图书馆供下载。
s3cmd - 用于管理Amazon S3和CloudFront的命令行工具。
s4cmd - 超级S3命令行工具,有利于提高性能。
you-get - 用Python 3编写的YouTube / Youku / Niconico视频下载器。
youtube-dl - 从YouTube下载视频的小型命令行程序。
电子商务用于电子商务和支付的框架和库。
alipay - 用于Python的非官方支付宝API。
Cartridge - 使用Mezzanine构建的购物车应用程序。
django-oscar - Django的开源电子商务框架。
django-shop - 基于Django的商店系统。
merchant - 一个Django应用程序,接受来自各种支付处理器的付款。
money - 具有可选CLDR支持的区域设置感知格式和可扩展货币交换解决方案的Money类。
python-currency - 显示货币格式及其污秽货币。
forex-python - 外汇汇率,比特币价格指数和货币转换。
saleor - Django的电子商务店面。
shoop - 基于Django的开源电子商务平台。
编辑器插件和IDEEmacs
elpy - Emacs Python开发环境。
Sublime文本
anaconda - Anaconda将你的Sublime Text 3变成一个全功能的Python开发IDE。
SublimeJEDI - 一个令人敬畏的自动完成库Jedi的Sublime Text插件。
VIM
jedi-vim - 用于Python的Jedi自动完成库的Vim绑定。
python-mode - 用于将Vim转换为Python IDE的一体化插件。
YouCompleteMe - 包括基于Jedi的Python完成引擎。
Visual Studio
PTVS - Visual Studio的Python工具。
Visual Studio代码
Python - 一种支持Python语言的扩展,具有linting,IntelliSense,格式化,重构,调试,单元测试和jupyter支持等功能。
IDE
PyCharm - JetBrains的商业Python IDE。有免费的社区版。
spyder - 开源Python IDE。
电子邮件用于发送和解析电子邮件的库。
envelopes - 为人类邮寄。
flanker - 电子邮件地址和Mime解析库。
imbox - 人类的Python IMAP。
inbox.py - 人类的Python SMTP服务器。
lamson - Pythonic SMTP应用服务器。
Marrow Mailer - 高性能可扩展邮件传递框架。
modoboa - 邮件托管和管理平台,包括现代和简化的Web UI。
Nylas Sync Engine - 在强大的电子邮件同步平台上提供RESTful API。
yagmail - 又一个Gmail / SMTP客户端。
环境管理用于Python版本和环境管理的库。
pipenv - Pipfile,Pip和Virtualenv的神圣婚姻。
poetry - Python依赖管理和包装变得简单。
pyenv - 简单的Python版本管理。
venv - (Python 3.3+中的 Python标准库)创建轻量级虚拟环境。
virtualenv - 创建独立Python环境的工具。
文档用于文件操作和MIME类型检测的库。
mimetypes - (Python标准库)将文件名映射到MIME类型。
path.py - os.path的模块包装器。
pathlib - (Python标准库)跨平台,面向对象的路径库。
PyFilesystem2 - Python的文件系统抽象层。
python-magic - libmagic文件类型标识库的Python接口。
Unipath - 面向对象的文件/目录操作方法。
watchdog - 用于监视文件系统事件的API和shell实用程序。
外部函数接口用于提供外部函数接口的库。
cffi - Python的外部函数接口,用于调用C代码。
ctypes - (Python标准库)Python的外部函数接口,用于调用C代码。
PyCUDA - Nvidia的CUDA API的Python包装器。
SWIG - 简化的包装器和接口生成器。
表单用于处理表单的库。
deform - 受形式表单生成库影响的Python HTML表单生成库。
django-bootstrap3 - 与Django的Bootstrap 3集成。
django-bootstrap4 - Bootstrap 4与Django的集成。
django-crispy-forms - 一款Django应用程序,可让您以非常优雅和干燥的方式创建漂亮的表单。
django-remote-forms - 独立于平台的Django表单序列化程序。
WTForms - 灵活的表单验证和呈现库。
函数程序设计使用Python进行函数程序设计。
coconut - 椰子是Python的变种,专为简单,优雅,Pythonic功能编程而打造。
CyToolz - Toolz的Cython实现:高性能功能实用程序。
fn.py - Python中的函数编程:实现丢失的功能以享受FP。
funcy - 一种奇特而实用的功能工具。
Toolz - 迭代器,函数和字典的函数实用程序的集合。
GUI用于处理图形用户界面应用程序的库。
curses - 用于创建终端GUI应用程序的ncurses的内置包装器。
Eel - 用于制作简单类似Electron的离线HTML / JS GUI应用程序的小型库,可以完全访问Python功能和库。
enaml - 使用像QML这样的声明语法创建漂亮的用户界面。
Flexx - Flexx是一个用于创建GUI的纯Python工具包,它使用Web技术进行渲染。
Gooey - 将命令行程序转换为一行完整的GUI应用程序。
kivy - 用于创建NUI应用程序的库,可在Windows,Linux,Mac OS X,Android和iOS上运行。
pyglet - 用于Python的跨平台窗口和多媒体库。
PyGObject - GLib / GObject / GIO / GTK +(GTK + 3)的Python绑定。
PyQt - 用于Qt跨平台应用程序和UI框架的Python绑定,支持Qt v4和Qt v5框架。
PySide - 用于Qt跨平台应用程序和UI框架的Python绑定,支持Qt v4框架。
PySimpleGUI - 用于tkinter,Qt,WxPython和Remi的包装器,为初学者和中级自定义GUI创建统一,易于理解和更类似Python的界面。
pywebview - 围绕webview组件的轻量级跨平台本机包装器,允许在其自己的本机专用窗口中显示HTML内容。
Tkinter - Tkinter是Python的事实上的标准GUI包。
Toga - 一个Python原生的OS原生GUI工具包。
urwid - 用于创建终端GUI应用程序的库,强大支持小部件,事件,丰富的颜色等。
wxPython - wxWidgets C ++类库与Python的混合。
游戏开发游戏开发库。
Cocos2d - cocos2d是用于构建2D游戏,演示和其他图形/交互式应用程序的框架。它基于pyglet。
Harfang3D - 用于3D,VR和游戏开发的Python框架。管理和显示复杂的3D场景,包括物理,视频,声音和音乐,访问VR设备。全部用C ++编写。
Panda3D - 由迪士尼开发并由卡内基梅隆娱乐技术中心维护的3D游戏引擎。用C ++编写,完全用Python包装。
Pygame - Pygame是一组用于编写游戏的Python模块。
PyOgre - 用于Ogre 3D渲染引擎的Python绑定,可用于游戏,模拟,任何3D。
PyOpenGL - 用于OpenGL的Python ctypes绑定及其相关的API。
PySDL2 - 基于ctypes的SDL2库包装器。
RenPy - 一个视觉新颖的引擎。
地理位置用于地理编码地址和处理纬度和经度的图书馆。
django-countries - 一个Django应用程序,提供用于表单的国家选择,标志图标静态文件和模型的国家/地区字段。
GeoDjango - 世界级的地理网络框架。
GeoIP - MaxMind GeoIP遗留数据库的Python API。
geojson - GeoJSON的Python绑定和实用程序。
geopy - Python地理编码工具箱。
pygeoip - 纯Python GeoIP API。
HTML操作用于处理HTML和XML的库。
BeautifulSoup - 提供用于迭代,搜索和修改HTML或XML的Pythonic习语。
bleach - 基于白名单的HTML清理和文本链接库。
cssutils - Python的CSS库。
html5lib - 用于解析和序列化HTML文档和片段的标准兼容库。
lxml - 一个非常快速,易于使用且通用的库,用于处理HTML和XML。
MarkupSafe - 为Python实现XML / HTML / XHTML Markup安全字符串。
pyquery - 一个类似jQuery的库,用于解析HTML。
untangle - 将XML文档转换为Python对象以便于访问。
WeasyPrint - 可以导出为PDF的HTML和CSS的可视化渲染引擎。
xmldataset - 简单的XML解析。
xmltodict - 使用XML感觉就像使用JSON一样。
HTTP用于处理HTTP的库。
grequests - 针对异步HTTP请求的请求+ gevent。
httplib2 - 全面的HTTP客户端库。
requests - 对Humans™的HTTP请求。
treq - 像在Twisted的HTTP客户端之上构建的API之类的Python请求。
urllib3 - 具有线程安全连接池,文件发布支持,健全的HTTP库。
硬件用硬件编程的库。
ino - 用于处理Arduino的命令行工具包。
keyboard - 在Windows和Linux上挂钩并模拟全局键盘事件。
mouse - 在Windows和Linux上挂钩并模拟全局鼠标事件。
Pingo -Pingo为Raspberry Pi,pcDuino,Intel Galileo等程序设备提供统一的API。
PyUserInput - 用于鼠标和键盘的跨平台控制的模块。
scapy - 一个出色的数据包操作库。
wifi - 用于在Linux上使用WiFi的Python库和命令行工具。
图像处理用于处理图像的库。
hmap - 图像直方图重新映射。
imgSeek - 使用视觉相似性搜索图像集合的项目。
nude.py - 裸露检测。
pagan -复古identicon(阿凡达)根据输入的字符串和哈希生成。
pillow - 枕头是友好的PIL叉子。
pyBarcode - 在Python中创建条形码而无需PIL。
pygram - 类似Instagram的图像过滤器。
quads - 基于四叉树的计算机艺术。
scikit-image - 用于(科学)图像处理的Python库。
thumbor - 智能成像服务。它支持按需裁剪,重新调整大小和翻转图像。
wand - MagickWand的 Python绑定,ImageMagick的C API。
实现Python的实现。
CLPython - 用Common Lisp编写的Python编程语言的实现。
CPython - 用C编写的Python编程语言的默认,最广泛使用的实现。
Cython - 优化Python的静态编译器。使用类型mixins将Python编译为C或C ++模块,从而大大提高性能
Grumpy - 比解释器更多的编译器作为更强大的CPython2.7替换(alpha)。
IronPython - 用C#编写的Python编程语言的实现,目标是.NET Framework和Mono。
Jython - 用Java编写的用于Java虚拟机(JVM)的Python编程语言的实现。
MicroPython - MicroPython - 一种针对微控制器和受约束系统的精简高效的Python编程语言实现
Numba - 用于LLVM的Python JIT编译器,旨在用于科学Python。
PeachPy - 嵌入在Python中的x86-64汇编程序。可用作Python的内联汇编程序,也可用作Windows,Linux,OS X,Native Client和Go的独立汇编程序。
Pyjion - 基于CoreCLR的Python JIT。
PyPy - 用RPython编写并转换成C. PyPy的Python编程语言的实现着重于速度,效率和与原始CPython解释器的兼容性。解释器使用黑魔法使Python非常快,而无需添加其他类型信息。
PySec - 经过强化的python版本,使安全专业人员和开发人员能够更轻松地编写应用程序,使其更能抵御攻击和操纵。
Pyston - 使用LLVM和现代JIT技术构建的Python实现,旨在实现良好的性能。
Stackless Python - Python编程语言的增强版本,它允许程序员从基于线程的编程中获益,而不会出现与传统线程相关的性能和复杂性问题。
互动口译员交互式Python解释器(REPL)。
bpython - Python解释器的一个奇特的接口。
Jupyter Notebook(IPython) - 一个丰富的工具包,可以帮助您以交互方式充分利用Python。
awesome-jupyter
ptpython - 基于python-prompt-toolkit构建的高级Python REPL 。
国际化i18n合作的图书馆。
Babel - Python的国际化库。
PyICU - 用于Unicode C ++库(ICU)的国际组件的包装器。
Job Scheduler用于安排工作的库。
APScheduler - 一个轻巧但功能强大的进程内任务调度程序,可让您安排功能。
django-schedule - Django的日历应用程序。
doit - 任务运行器和构建工具。
gunnery - 用于具有基于Web的界面的分布式系统的多用途任务执行工具。
Joblib - 一组用于在Python中提供轻量级流水线的工具。
Plan - 在Python中编写crontab文件就像一个魅力。
schedule - Python作业调度。
Spiff - 用纯Python实现的强大工作流引擎。
TaskFlow - 一个Python库,有助于使任务执行变得简单,一致和可靠。
Airflow - Airflow是一个以编程方式创作,安排和监控工作流程的平台。
日志用于生成和使用日志的库。
Eliot - 针对复杂和分布式系统的日志记录。
logbook - Python的日志替换。
logging - (Python标准库)Python的日志记录工具。
raven - Sentry的Python客户端,用于Web应用程序的日志/错误跟踪,崩溃报告和聚合平台。
机器学习机器学习库。
通用机器学习
PyOD - > Python Outlier Detection,全面且可扩展的Python工具包,用于检测多变量数据中的外围对象。适用于高级模型,包括神经网络/深度学习和异常集合。
steppy - >轻量级Python库,用于快速,可重复的机器学习实验。介绍非常简单的界面,实现清洁机器学习管道设计。
steppy-toolkit - >神经网络,变换器和模型的精选集合,使您的机器学习更快,更有效。
CNTK - Microsoft认知工具包(CNTK),一种开源深度学习工具包。文档可以在这里找到。
auto_ml - 用于生产和分析的自动化机器学习。让您专注于ML的有趣部分,同时输出生产就绪代码,以及数据集和结果的详细分析。包括对NLP,XGBoost,CatBoost,LightGBM的支持,以及即将深入学习。
机器学习 - 自动构建,包括Web界面和一组程序界面 API,用于支持向量机。相应的数据集存储在SQL数据库中,然后生成用于预测的模型,存储到NoSQL数据存储区中。
XGBoost - 用于eXtreme Gradient Boosting(树)库的Python绑定。
Apache SINGA - 用于开发开源机器学习库的Apache Incubating项目。
用于黑客的贝叶斯方法 - 用于 Python中的概率编程的Book / iPython笔记本。
Featureforge一组用于创建和测试机器学习功能的工具,具有scikit-learn兼容API。
Apache Spark中的MLlib - Spark中的分布式机器学习库
Hydrosphere Mist - 用于部署Apache Spark MLLib机器学习模型的服务,作为实时,批量或反应式Web服务。
scikit-learn - 基于SciPy构建的用于机器学习的Python模块。
metric-learn - 用于度量学习的Python模块。
SimpleAI Python实现了许多人工智能算法,在“人工智能,现代方法”一书中描述。它着重于提供易于使用,记录良好且经过测试的库。
astroML - 用于天文学的机器学习和数据挖掘。
graphlab-create - 在磁盘支持的DataFrame之上实现的具有各种机器学习模型(回归,聚类,推荐系统,图形分析等)的库。
BigML - 与外部服务器联系的库。
pattern - 用于Python的Web挖掘模块。
NuPIC - 用于智能计算的Numenta平台。
Pylearn2 - 基于Theano的机器学习库。
keras - TensorFlow,CNTK和Theano的高级神经网络前端。
烤宽面条 - 在Theano建立和训练神经网络的轻量级图书馆。
Chainer - 灵活的神经网络框架。
prophet - Facebook快速自动化的时间序列预测框架。
gensim - 人类的主题建模。
PyBrain - 另一个Python机器学习库。
brainstorm - 快速,灵活和有趣的神经网络。这是PyBrain的继承者。
surprise - 用于构建和分析推荐系统的scikit。
python-recsys - 用于实现推荐系统的Python库。
Bolt - Bolt Online Learning Toolbox。[深入学习]
nilearn - Python中NeuroImaging的机器学习。
neuropredict - 针对新手机器学习者和非专业程序员,这个软件包提供简单(无需编码)和全面的机器学习(评估和预测性能的完整报告,无需您编写代码),用于神经错误的Python和任何其他类型的功能。这是为了吸收ML工作流程的大部分内容,不像其他软件包,如nilearn和pymvpa,它们要求您学习其API和代码以生成任何有用的内容。
imbalanced-learn - 使用各种技术在采样和过采样下执行的Python模块。
shogun - shogun学习工具箱。
Caffe - 一个深度学习框架,以清洁,可读性和速度为基础。
pyhsmm - 用于贝叶斯隐马尔可夫模型(HMM)和显式持续时间隐马尔可夫模型(HSMM)的近似无监督推理的库,侧重于贝叶斯非参数扩展,HDP-HMM和HDP-HSMM,主要具有弱极限近似。
mrjob - 允许Python程序在Hadoop上运行的库。
SKLL - 围绕scikit-learn的包装,使得进行实验变得更加简单。
neurolab
Theano - 优化GPU元编程代码,在Python中生成面向数组的优化数学编译器。
TensorFlow - 使用数据流图进行数值计算的开源软件库。
pomegranate - 用于Python的隐马尔可夫模型,在Cython中实现速度和效率。
python-timbl - 包含完整TiMBL C ++编程接口的Python扩展模块。Timbl是一个精心设计的k-Nearest Neighbors机器学习工具包。
deap - 进化算法框架。
mlxtend - 由数据科学和机器学习任务的有用工具组成的库。
neon - Nervana 基于Python 的高性能深度学习框架[DEEP LEARNING]。
Optunity - 一个专用于自动超参数优化的库,它具有简单,轻量级的API,便于直接替换网格搜索。
Neural Networks and Deep Learning- 我的书“神经网络和深度学习”[深度学习]的代码样本。
annoy - 近似最近邻居的实施。
TPOT - 使用遗传编程自动创建和优化机器学习管道的工具。将它视为您的个人数据科学助手,自动化机器学习的繁琐部分。
pgmpy用于处理概率图形模型的python库。
DIGITS - 深度学习GPU培训系统(DIGITS)是一个用于培训深度学习模型的Web应用程序。
Orange - 面向新手和专家的开源数据可视化和数据分析。
MXNet - 具有动态,突变感知数据流Dep Scheduler的轻量级,便携式,灵活的分布式/移动深度学习; 适用于Python,R,Julia,Go,Javascript等。
TFLearn - 深度学习库,为TensorFlow提供更高级别的API。
REP - 基于IPython的环境,以一致且可重复的方式进行数据驱动的研究。REP不是试图替代scikit-learn,而是扩展它并提供更好的用户体验。[已过时]
rgf_python - 规则化贪婪森林(树)库的Python绑定。
skbayes - 使用scikit-learn API进行贝叶斯机器学习的Python包。
fuku-ml - 简单的机器学习库,包括Perceptron,回归,支持向量机,决策树等,它易于使用,易于初学者学习。
Xcessiv - 基于Web的应用程序,用于快速,可扩展和自动化的超参数调整和堆叠集成。
PyTorch - Python中的张量和动态神经网络,具有强大的GPU加速功能
ML-From-Scratch - 在Python中从头开始实现机器学习模型,重点是透明度。旨在以无障碍的方式展示ML的螺母和螺栓。
xRBM - 限制玻尔兹曼机(RBM)的库及其在Tensorflow中的条件变体。
CatBoost - 决策树库上的通用梯度增强功能,支持开箱即用的分类功能。它易于安装,文档齐全,支持CPU和GPU(甚至是多GPU)计算。
stacked_generalization - 在Python中实现机器学习堆叠技术作为便利库。
modAL - 用于Python的模块化主动学习框架,构建于scikit-learn之上。
Cogitare:适用于Python的现代,快速,模块化的深度学习和机器学习框架。
Parris - Parris,用于机器学习算法的自动化基础设施设置工具。
neonrvm - neonrvm是一个基于RVM技术的开源机器学习库。它是用C编程语言编写的,并附带Python编程语言绑定。
Turi Create - 从Apple学习机器。Turi Create简化了定制机器学习模型的开发。您无需成为机器学习专家即可向您的应用添加推荐,对象检测,图像分类,图像相似性或活动分类。
xLearn - 高性能,易于使用且可扩展的机器学习包,可用于解决大规模机器学习问题xLearn对于解决大规模稀疏数据的机器学习问题特别有用,这在互联网服务(如在线广告和推荐系统)中非常常见。
mlens - 高性能,内存高效,最大程度并行化的集成学习,与scikit-learn集成。
Netron - 用于机器学习模型的Visualizer。
Thampi - AWS Lambda上的机器学习预测系统
MindsDB - 开源框架,以简化神经网络的使用。
Gorgonia - Gorgonia是一个帮助促进Golang机器学习的图书馆。
Microsoft推荐人:作为Jupyter笔记本提供的构建推荐系统的示例和最佳实践。包含Microsoft Research以及其他公司和机构的一些最新技术。
StellarGraph:Graphs上的机器学习,一种用于机器学习图形结构(网络结构)数据的Python库。
BentoML:用于打包和部署机器学习模型的工具包,用于生产服务
n
H2O - 开源快速可扩展机器学习平台。
指标 - 机器学习评估指标。
NuPIC - 用于智能计算的Numenta平台。
scikit-learn - 最受欢迎的机器学习Python库。
Spark ML - Apache Spark可扩展的机器学习库。
vowpal_porpoise -一个轻量级的Python包装的Vowpal Wabbit。
xgboost - 可扩展,可移植和分布式渐变增强库。
微软Windows:
Microsoft Windows上的Python编程。
Python(x,y) - 基于Qt和Spyder的面向科学应用程序的Python发行版。
pythonlibs - Python扩展包的非官方Windows二进制文件。
PythonNet - 与.NET公共语言运行时(CLR)的Python集成。
PyWin32 - 适用于Windows的Python扩展。
WinPython - 适用于Windows 7/8的便携式开发环境。
其它:有用的库或工具不适合上述类别。
blinker - 一个快速的Python进程中信号/事件调度系统。
boltons - 一组纯Python实用程序。
itsdangerous - 将可信数据传递给不受信任的环境的各种帮助程序。
pluginbase - 一个简单但灵活的Python插件系统。
tryton - 通用业务框架。
自然语言处理:使用人类语言的图书馆。
一般
gensim - 人类的主题建模。
langid.py - 独立语言识别系统。
nltk - 构建Python程序以使用人类语言数据的领先平台。
pattern - 用于Python的Web挖掘模块。
polyglot - 支持数百种语言的自然语言管道。
pytext - 基于PyTorch的自然语言建模框架。
PyTorch-NLP - 一个工具包,可以快速深入学习研究的NLP原型。
spacy - 用于Python和Cython的工业级自然语言处理库。
stanfordnlp - 斯坦福NLP集团的官方Python库,支持50多种语言。
中文
jieba - 最受欢迎的中文文本分割库。
pkuseg-python - 用于各种域中的中文分词的工具包。
snownlp - 用于处理中文文本的库。
funNLP - 中文NLP的工具和数据集的集合。
网络虚拟化
用于虚拟网络和SDN(软件定义网络)的工具和库。
mininet - 一种流行的网络模拟器和用Python编写的API。
pox - 基于Python的SDN控制应用程序,例如OpenFlow SDN控制器。
联网用于网络编程的库。
asyncio - (Python标准库)异步I / O,事件循环,协同程序和任务。
pulsar - Python的事件驱动并发框架。
pyzmq - ZeroMQ消息库的Python包装器。
Twisted - 事件驱动的网络引擎。
napalm - 用于操纵网络设备的跨供应商API。
新闻Feed用于构建用户活动的库。
django-activity-stream - 从您网站上的操作生成通用活动流。
Stream Framework - 使用Cassandra和Redis构建新闻源和通知系统。
ORM实现对象关系映射或数据映射技术的库。
关系数据库
Django模型 - Django的一部分。
SQLAlchemy - Python SQL工具包和对象关系映射器。
dataset - 将Python dicts存储在数据库中 - 与SQLite,MySQL和PostgreSQL一起使用orator - 演说者ORM提供了一个简单而美观的ActiveRecord实现。
peewee - 一种小型,富有表现力的ORM。
pony - 为SQL提供面向生成器的接口的ORM。
pydal - 纯Python数据库抽象层。
NoSQL数据库
hot-redis - Redis的丰富Python数据类型。
mongoengine - 用于处理MongoDB的Python Object-Document-Mapper。
PynamoDB - Amazon DynamoDB的 Pythonic界面。
redisco - Redis中保存的简单模型和容器的Python库。
包管理用于包和依赖关系管理的库。
pip - Python包和依赖项管理器。
pip-tools - 一组工具,可以保持固定的Python依赖关系。
conda - 跨平台,Python无关的二进制包管理器。
包存储库本地PyPI存储库服务器和代理。
warehouse - 下一代Python包存储库(PyPI)。
bandersnatch - Python Packaging Authority(PyPA)提供的PyPI镜像工具。
devpi - PyPI服务器和打包/测试/发布工具。
localshop - 本地PyPI服务器(自定义包和pypi的自动镜像)。
权限允许或拒绝用户访问数据或功能的库。
django-guardian - 实现Django 1.2+的每对象权限
django-rules - 一个小而强大的应用程序,为Django提供对象级权限,无需数据库。
流程用于启动和与OS进程通信的库。
delegator.py - Humans™2.0的子流程。
sarge - 另一个子进程包装器。
sh - Python的完整子进程替换。
队列用于处理事件和任务队列的库。
celery - 基于分布式消息传递的异步任务队列/作业队列。
huey - 小型多线程任务队列。
mrq - Queue先生 - 使用Redis和gevent在Python中的分布式工作者任务队列。
rq - Python的简单作业队列。
推荐系统用于构建推荐系统的库。
annoy - C ++ / Python中近似最近的邻居,针对内存使用进行了优化。
fastFM - 分解机器的库。
implocit - 隐式数据集的协同过滤的快速Python实现。
libffm - 用于字段感知分解机器(FFM)的库。
lightfm - 许多流行推荐算法的Python实现。
spotlight - 使用PyTorch的深度推荐器模型。
Surprose - 用于构建和分析推荐系统的scikit。
tensorrec - TensorFlow中的推荐引擎框架。
RESTful API用于开发RESTful API的库。
Django
django-rest-framework - 一个强大而灵活的工具包,用于构建Web API。
django-tastypie - 为Django应用程序创建美味的API。
Flask
eve - 由Flask,MongoDB和良好意图提供支持的REST API框架。
flask-api-utils - 负责Flask的API表示和身份验证。
flask-api - Flask的可浏览Web API。
flask-restful - 快速为Flask构建REST API。
flask-restless - 为使用SQLAlchemy定义的数据库模型生成RESTful API。
Pyramid
cornice - Pyramid的RESTful框架。
Framework agnostic
apistar - 专为Python 3设计的智能Web API框架。
falcon - 用于构建云API和Web应用程序后端的高性能框架。
hug - 一个Python3框架,用于通过HTTP和命令行干净地公开API以及自动文档和验证。
restless - 基于从Tastypie学到的经验教训的框架不可知的REST框架。
ripozo - 快速创建REST / HATEOAS /超媒体API。
sandman - 用于现有数据库驱动系统的自动REST API。
机器人机器人图书馆。
PythonRobotics - 这是可视化的各种机器人算法的汇编。
rospy - 这是ROS(机器人操作系统)的库。
RPC服务器RPC兼容的服务器。
SimpleJSONRPCServer - 此库是JSON-RPC规范的实现。
SimpleXMLRPCServer - (Python标准库)简单的XML-RPC服务器实现,单线程。
zeroRPC - zerorpc是一个基于ZeroMQ和MessagePack的灵活的RPC实现。
科学科学计算的图书馆。
astropy - 用于天文学的社区Python库。
bcbio-nextgen - 为全自动高通量测序分析提供最佳实践管道。
bccb - 与生物分析相关的有用代码的集合。
Biopython - Biopython是一套免费提供的生物计算工具。
cclib - 用于解析和解释计算化学包结果的库。
Colour - 一种色彩科学包,实现了全面的色彩理论转换和算法。
NetworkX - 适用于复杂网络的高效软件。
NIPY - 神经影像工具包的集合。
NumPy - 使用Python进行科学计算的基础包。
Open Babel - 一种化学工具箱,设计用于说多种语言的化学数据。
ObsPy - 用于地震学的Python工具箱。
PyDy - Python Dynamics的缩写,用于协助动态建模动画中的工作流程。
PyMC - 马尔可夫链蒙特卡罗采样工具包。
QuTiP - Python中的Quantum工具箱。
RDKit - Cheminformatics和机器学习软件。
SciPy - 基于Python的数学,科学和工程开源软件生态系统。
statsmodels - Python中的统计建模和计量经济学。
SymPy - 用于符号数学的Python库。
Zipline - 一个Pythonic算法交易库。
SimPy - 基于流程的离散事件仿真框架。
搜索用于索引和执行数据搜索查询的库和软件。
elasticsearch-py - Elasticsearch的官方低级Python客户端。
elasticsearch-dsl-py - Elasticsearch的官方高级Python客户端。
django-haystack - 模块化搜索Django。
pysolr - Apache Solr的轻量级Python包装器。
whoosh - 一个快速,纯粹的Python搜索引擎库。
序列化用于序列化复杂数据类型的库
marshmallow - 一个轻量级库,用于将复杂对象转换为简单的Python数据类型。
pysimdjson - 用于simdjson的Python绑定。
python-rapidjson -围绕一个Python包装RapidJSON。
无服务器框架用于开发无服务器Python代码的框架。
python-lambda - 用于在AWS Lambda中开发和部署Python代码的工具包。
Zappa - 用于在AWS Lambda和API Gateway上部署WSGI应用程序的工具。
特定格式处理用于解析和操作特定文本格式的库。
一般
tablib - XLS,CSV,JSON,YAML中的表格数据集模块。
办公
openpyxl - 用于读取和写入Excel 2022 xlsx / xlsm / xltx / xltm文件的库。
pyexcel - 提供一个用于读取,操作和编写csv,ods,xls,xlsx和xlsm文件的API。
python-docx - 读取,查询和修改Microsoft Word 2022/2022 docx文件。
python-pptx - 用于创建和更新PowerPoint(.pptx)文件的Python库。
unoconv - 在LibreOffice / OpenOffice支持的任何文档格式之间进行转换。
XlsxWriter - 用于创建Excel .xlsx文件的Python模块。
xlwings - 一个获得BSD许可的库,可以轻松地从Excel调用Python,反之亦然。
xlwt / xlrd - 从Excel文件中写入和读取数据和格式信息。
PDFMiner - 用于从PDF文档中提取信息的工具。
PyPDF2 - 一个能够分割,合并和转换PDF页面的库。
ReportLab - 允许快速创建丰富的PDF文档。
Markdown
Mistune - Markdown的最快和全功能的纯Python解析器。
Python-Markdown - John Gruber的Markdown的Python实现。
YAML
PyYAML - Python的YAML实现。
CSV
csvkit - 用于转换为CSV并使用CSV的实用程序。
档案
unp - 一个可以轻松解压缩归档的命令行工具。
静态站点生成器静态站点生成器是一种软件,它将一些文本+模板作为输入,并在输出上生成HTML文件。
mkdocs - Markdown友好文档生成器。
pelican - 支持Markdown和reST语法的静态站点生成器。
lektor - 易于使用的静态CMS和博客引擎。
nikola - 静态网站和博客生成器。
标记用于标记项目的库。
django-taggit - Django的简单标记。
模板引擎用于模板和lexing的库和工具。
Jinja2 - 一种现代和设计师友好的模板语言。
Genshi - 用于生成Web感知输出的Python模板工具包。
Mako - 用于Python平台的超快速和轻量级模板。
测试用于测试代码库和生成测试数据的库。
测试框架
pytest - 一个成熟的全功能Python测试工具。
hypothesis - 假设是一种基于Quickcheck风格的高级属性测试库。
nose2 - nose基于`unittest2 的继承者。
Robot Framework - 通用测试自动化框架。
unittest - (Python标准库)单元测试框架。
运行测试
green - 干净,运行测试。
mamba - Python的权威测试工具。出生在BDD的旗帜下。
tox - 在多个Python版本中自动构建和测试发行版
GUI / Web测试
locust - 用Python编写的可扩展用户负载测试工具。
PyAutoGUI - PyAutoGUI是一个面向人类的跨平台GUI自动化Python模块。
Selenium - Selenium WebDriver的Python绑定。
sixpack - 与语言无关的A / B测试框架。
splinter - 用于测试Web应用程序的开源工具。
Mock
doublex - 强大的测试加倍Python的框架。
freezegun - 通过模拟日期时间模块来度过时间。
httmock - 一个用于Python 2.6+和3.2+请求的模拟库。
httpretty - Python的HTTP请求模拟工具。
mock - (Python标准库)一个模拟和修补库。
Mocket - Socket Mock Framework加上HTTP [S] / asyncio / gevent模拟库,具有录制/重放功能。
responser - 用于模拟请求Python库的实用程序库。
VCR.py - 在测试中记录和重放HTTP交互。
Object Factories
factory_boy - Python的测试夹具替代品。
mixer - 另一个夹具更换。支持Django,Flask,SQLAlchemy,Peewee等。
model_mommy - 在Django中创建用于测试的随机装置。
代码覆盖范围
coverage - 代码覆盖率测量。
Fake Data
mimesis - 是一个Python库,可以帮助您生成虚假数据。
fake2db - 假数据库生成器。
faker - 生成虚假数据的Python包。
radr - 生成随机日期时间/时间。
错误处理程序
FuckIt.py - FuckIt.py使用最先进的技术确保您的Python代码无论是否有权运行。
文字处理用于解析和操作纯文本的库。
一般
chardet - Python 2/3兼容字符编码检测器。
difflib - (Python标准库)用于计算增量的助手。
ftfy - 使Unicode文本更少破碎,更自然地更加一致。
fuzzywuzzy -模糊字符串匹配。
Levenshtein - Levenshtein距离和弦相似性的快速计算。
pangu.py - 偏执文本间距。
pyfiglet - 用Python编写的figlet实现。
pypinyin - 将汉语(汉字)转换为拼音(拼音)。
textdistance - 计算序列之间的距离。30多种算法,纯python实现,通用接口,可选的外部库使用。
unidecode - Unicode文本的ASCII音译。
Slugify
awesome-slugify - 一个可以保存unicode的Python slugify库。
python-slugify - 一个Python ungode库,可将unicode转换为ASCII。
unicode-slugify - 一个以Django为依赖关系生成unicode slug的slugifier。
唯一标识符
hashids - 在Python中实现hashids。
shortuuid - 用于简洁,明确且URL安全的UUID的生成器库。
分析器
ply - 为Python实现lex和yacc解析工具。
pygments - 通用语法荧光笔。
pyparsing - 用于生成解析器的通用框架。
python-nameparser - 将人名解析为各自的组件。
python-phonenumbers - 解析,格式化,存储和验证国际电话号码。
python-user-agents - 浏览器用户代理解析器。
sqlparse - 非验证SQL解析器。
第三方API用于访问第三方服务API的库。请参阅:Python API包装器和库列表。
apache-libcloud - 一个适用于所有云的Python库。
boto3 - Amazon Web Services的Python接口。
django-wordpress - Django的 WordPress模型和视图。
facebook-sdk - Facebook平台Python SDK。
google-api-python-client - 用于Python的Google API客户端库。
gspread - Google Spreadsheets Python API。
twython - Twitter API的Python包装器。
URL操作用于解析URL的库。
furl - 一个小型Python库,可以轻松解析和操作URL。
purl - 一个简单的,不可变的URL类,带有用于询问和操作的干净API。
pyshorteners - 一个纯Python的URL缩短库。
webargs - 一个用于解析HTTP请求参数的友好库,内置支持流行的Web框架,包括Flask,Django,Bottle,Tornado和Pyramid。
视频用于操纵视频和GIF的库。
moviepy - 基于脚本的电影编辑模块,具有多种格式,包括动画GIF。
scikit-video - SciPy的视频处理程序。
WSGI服务器兼容WSGI的Web服务器。
bjoern - 异步,非常快,用C语言编写。
gunicorn - 预分叉,部分用C语言写成。
uWSGI - 一个项目旨在开发一个用于构建托管服务的完整堆栈,用C语言编写。
waitress - 多线程,为金字塔提供动力。
werkzeug - 一个用于Python的WSGI实用程序库,可以为Flask提供支持,并且可以轻松嵌入到您自己的项目中。
网络资产管理用于管理,压缩和缩小网站资产的工具。
django-compressor - 将链接和内联JavaScript或CSS压缩到一个缓存文件中。
django-pipeline - Django的资产包装库。
django-storages - Django的自定义存储后端集合。
fanstatic - 作为Python包打包,优化和提供静态文件依赖性。
fileconveyor - 用于检测文件并将文件同步到CDN,S3和FTP的守护程序。
flask-assets - 帮助您将webassets集成到Flask应用程序中。
webassets - 捆绑,优化和管理静态资源的唯一缓存清除URL。
Web内容提取用于提取Web内容的库。
html2text - 将HTML转换为Markdown格式的文本。
lassie - 网页内容检索。
micawber - 一个用于从URL中提取丰富内容的小型库。
newspaper - Python中的新闻提取,文章提取和内容管理。
python- readability - arc90可读性工具的快速Python端口。
requests-html - 用于Pythonic HTML解析。
sumy - 用于自动汇总文本文档和HTML页面的模块。
textract - 从任何文档,Word,PowerPoint,PDF等中提取文本。
toapi - 每个网站都提供API。
网页抓取和网页抓取用于自动从网站提取数据的库。
cole - 分布式爬行框架。
feedparser - 通用饲料解析器。
grab - 网站抓取框架。
MechanicalSoup - 用于自动与网站交互的Python库。
portia - 视觉刮擦Scrapy。
pyspider - 一个强大的蜘蛛系统。
robobrowser - 一个简单的Pythonic库,用于在没有独立Web浏览器的情况下浏览网页。
scrapy - 快速高级屏幕抓取和网络爬行框架。
网络框架Django - Python中最流行的Web框架。
Flask - Python的微框架。
Pyramid- 一个小型,快速,脚踏实地的开源Python Web框架。
Sanic - 写得很快的Web服务器。
Vibora - 受Flask启发的快速,高效和异步Web框架。
WebSocket
用于WebSocket的库。
autobahn-python - Twisted和asyncio上用于Python的WebSocket和WAMP 。
crossbar - 开源统一应用程序路由器(Autobahn上用于Python的Websocket和WAMP)。
django-channels - Django的开发人员友好的异步。
django-socketio - Django的WebSockets。
WebSocket-for-Python - 用于Python 2和3以及PyPy的WebSocket客户端和服务器库。
服务用于简化开发的在线工具和API。
CircleCI - 可以运行非常快速的并行测试的CI服务。(仅限GitHub)
Travis CI - 适用于您的开源和私有项目的流行CI服务。(仅限GitHub)
Vexor CI - 针对私人应用程序的持续集成工具,具有按分钟付费的计费模式。
Wercker - 一个基于Docker的平台,用于构建和部署应用程序和微服务。
代码质量
Codacy - 自动代码审查,以更快的速度发送更好的代码。
Codecov - 代码覆盖率仪表板。
CodeFactor - Git的自动代码审查。
Landscape - 托管连续的Python代码指标。
如何才能成为一名爬虫工程师?
一、爬虫工程师是干嘛的?
1.主要工作内容?
互联网是由一个一个的超链接组成的,从一个网页的链接可以跳到另一个网页,在新的网页里,又有很多链接。理论上讲,从任何一个网页开始,不断点开链接、链接的网页的链接,就可以走遍整个互联网!这个过程是不是像蜘蛛沿着网一样爬?这也是“爬虫”名字的由来。
作为爬虫工程师,就是要写出一些能够沿着网爬的”蜘蛛“程序,保存下来获得的信息。一般来说,需要爬出来的信息都是结构化的,如果不是结构化的,那么也就没什么意义了(百分之八十的数据是非结构化的)。爬虫的规模可达可小,小到可以爬取豆瓣的top 250电影,定时爬取一个星期的天气预报等。大到可以爬取整个互联网的网页(例如google)。下面这些,我认为都可以叫做爬虫:
1.爬知乎的作者和回答
2.爬百度网盘的资源,存到数据库中(当然,只是保存资源的链接和标题),然后制作一个网盘的搜索引擎
3.同上,种子网站的搜索引擎也是这样的
到这里,我们知道爬虫的任务是获取数据。现在比较流行大数据,从互联网方面讲,数据可以分成两种,一种是用户产生的(UGC),第二种就是通过一些手段获得的,通常就是爬虫。爬虫又不仅仅局限于从网页中获得数据,也可以从app抓包等。简而言之,就是聚合数据并让他们结构化。那么,哪些工作需要爬虫呢?
2.爬虫能做什么?
典型的数据聚合类的网站都需要爬虫。比如Google搜索引擎。Google能在几毫秒之内提供给你包含某些关键字的页面,肯定不是实时给你去找网页的,而是提前抓好,保存在他们自己的数据库里(那他们的数据库得多大呀)。所以种子搜索引擎,网盘搜索引擎,Resillio key引擎等都是用爬虫实现抓好数据放在数据库里的。
另外有一些提供信息对比的网站,比如比价类的网站,就是通过爬虫抓取不同购物网站商品的价格,然后将各个购物网站的价格展示在网站上。购物网站的价格时时都在变,但是比价网站抓到的数据不会删除,所以可以提供价格走势,这是购物网站不会提供的信息。
除此之外,个人还可以用爬虫做一些好玩的事情。比如我们想看大量的图片,可以写一个爬虫批量下载下来,不必一个一个点击保存,还要忍受网站的广告了;比如我们想备份自己的资料,例如保存下来我们在豆瓣发布过的所有的广播,可以使用爬虫将自己发布的内容全部抓下来,这样即使一些网站没有提供备份服务,我们也可以自己丰衣足食。
二、爬虫工程师需要掌握哪些技能?
我见过这样的说法:“爬虫是低级、重复性很多的工作,没有发展前途”。这是误解。首先,对于程序员来说基本上不存在重复性的工作,任何重复劳动都可以通过程序自动解决。例如博主之前要抓十几个相似度很高但是html结构不太一样的网站,我就写了一个简单的代码生成器,从爬虫代码到单元测试代码都可以自动生成,只要对应html结构稍微修改一下就行了。所以我认为,重复性的劳动在编程方面来说基本上是不存在的,如果你认为自己做的工作是重复性的,说明你比较勤快,不愿意去偷懒。而我还认为,勤快的程序员不是好程序员。下面我根据自己这段时间的工作经历,讲一讲爬虫需要哪些相关的技能。
1.基本的编码基础(至少一门编程语言)
这个对于任何编程工作来说都是必须的。基础的数据结构你得会吧。数据名字和值得对应(字典),对一些url进行处理(列表)等等。事实上,掌握的越牢固越好,爬虫并不是一个简单的工作,也并不比其他工作对编程语言的要求更高。熟悉你用的编程语言,熟悉相关的框架和库永远是百益无害。
我主要用Python,用Java写爬虫的也有,理论上讲任何语言都可以写爬虫的,不过最好选择一门相关的库多,开发迅速的语言。用C语言写肯定是自找苦吃了。
2.任务队列
当爬虫任务很大的时候,写一个程序跑下来是不合适的:
1.如果中间遇到错误停掉,重头再来?这不科学
2.我怎么知道程序在哪里失败了?任务和任务之间不应该相互影响
3.如果我有两台机器怎么分工?
所以我们需要一种任务队列,它的作用是:讲计划抓取的网页都放到任务队列里面去。然后worker从队列中拿出来一个一个执行,如果一个失败,记录一下,然后执行下一个。这样,worker就可以一个接一个地执行下去。也增加了扩展性,几亿个任务放在队列里也没问题,有需要可以增加worker,就像多一双亏筷子吃饭一样。
常用的任务队列有kafka,beanstalkd,celery等。
3.数据库
这个不用讲了,数据保存肯定要会数据库的。不过有时候一些小数据也可以保存成json或者csv等。我有时想抓一些图片就直接按照文件夹保存文件。
推荐使用NoSQL的数据库,比如mongodb,因为爬虫抓到的数据一般是都字段-值得对应,有些字段有的网站有有的网站没有,mongo在这方面比较灵活,况且爬虫爬到的数据关系非常非常弱,很少会用到表与表的关系。
4.HTTP知识
HTTP知识是必备技能。因为要爬的是网页,所以必须要了解网页啊。
首先html文档的解析方法要懂,比如子节点父节点,属性这些。我们看到的网页是五彩斑斓的,只不过是被浏览器处理了而已,原始的网页是由很多标签组成的。处理最好使用html的解析器,如果自己用正则匹配的话坑会很多。我个人非常喜欢xpath,跨语言,表达比价好,但是也有缺点,正则、逻辑判断有点别扭。
HTTP协议要理解。HTTP协议本身是无状态的,那么“登录”是怎么实现的?这就要求去了解一下session和cookies了。GET方法和POST方法的区别(事实上除了字面意思不一样没有任何区别)。
浏览器要熟练。爬虫的过程其实是模拟人类去浏览器数据的过程。所以浏览器是怎么访问一个网站的,你要学会去观察,怎么观察呢?Developer Tools!Chrome的Developer Tools提供了访问网站的一切信息。从traffic可以看到所有发出去的请求。copy as curl功能可以给你生成和浏览器请求完全一致的curl请求!我写一个爬虫的一般流程是这样的,先用浏览器访问,然后copy as curl看看有哪些header,cookies,然后用代码模拟出来这个请求,最后处理请求的结果保存下来。
5.运维
这个话题要说的有很多,实际工作中运维和开发的时间差不多甚至更多一些。维护已经在工作的爬虫是一个繁重的工作。随着工作时间增加,一般我们都会学着让写出来的爬虫更好维护一些。比如爬虫的日志系统,数据量的统计等。将爬虫工程师和运维分开也不太合理,因为如果一个爬虫不工作了,那原因可能是要抓的网页更新了结构,也有可能出现在系统上,也有可能是当初开发爬虫的时候没发现反扒策略,上线之后出问题了,也可能是对方网站发现了你是爬虫把你封杀了,所以一般来说开发爬虫要兼顾运维。
所以爬虫的运维我可以提供下面几个思路:
首先,从数据增量监控。定向爬虫(指的是只针对一个网站的爬虫)比较容易,一段时间之后对一些网站的数据增量会有一个大体的了解。经常看看这些数据的增加趋势是否是正常就可以了(Grafana)。非定向爬虫的数据增量不是很稳定,一般看机器的网络状况,网站的更新情况等(这方面我的经验不多)。
然后看爬虫执行的成功情况。在上面提到了用任务队列控制爬虫工作,这样解耦可以带来很多好处,其中一个就是可以就是可以对一次爬虫执行进行日志。可以在每次爬虫任务执行的时候,将执行的时间、状态、目标url、异常等放入一个日志系统(比如kibana),然后通过一个可视化的手段可以清晰地看到爬虫的失败率。
爬虫抛出的Exception。几乎所有的项目都会用到错误日志收集(Sentry),这里需要注意的一点是,忽略正常的异常(比如Connection错误,锁冲突等),否则的话你会被这些错误淹没。
三、爬虫与反爬
这同样是很深的一个话题,就像攻击武器与防御武器一样,双方总是在不断升级。常见的反爬措施(我遇到过的)有下面几种:
1.访问频率
很好理解,如果访问太频繁网站可能针对你的ip封锁一段时间,这和防DDoS的原理一样。对于爬虫来说,碰到这样的限制一下任务的频率就可以了,可以尽量让爬虫想人类一样访问网页(比如随机sleep一段时间,如果每隔3s访问一次网站很显然不是正常人的行为)。
2.登录限制
也比较常见。不过公开信息的网站一般不会有这个限制,这样让用户也麻烦了。其实反爬措施都或多或少的影响真实用户,反爬越严格,误杀用户的可能性也越高。对爬虫来说,登录同样可以通过模拟登录的方式解决,加个cookie就行了(话又说回来,网络的原理很重要)。
3.通过Header封杀
一般浏览器访问网站会有header,比如Safari或者Chrome等等,还有操作系统信息。如果使用程序访问并不会有这样的header。破解也很简单,访问的时候加上header就行。
4.JavaScript脚本动态获取网站数据
有一些网站(尤其是单页面网站)的内容并不是通过服务器直接返回的,而是服务器只返回一个客户端JavaScript程序,然后JavaScript获取内容。更高级的是,JavaScript在本地计算一个token,然后拿这个token来进行AJAX获取内容。而本地的JavaScript又是经过代码混淆和加密的,这样我们做爬虫的通过看源代码几乎不可能模拟出来这个请求(主要是token不可能破解),但是我们可以从另一个角度:headless的浏览器,也就是我们直接运行这个客户端程序,这可以100%地模拟真实用户!
5.验证码
这几乎是终极武器了,验证码是专门用来区分人和计算机的手段。对于反爬方来说,这种方式对真实用户和搜索引擎(其实可以通过记录搜索引擎爬虫的ip来区别对待,可以解决)的危害比较大,相信读者都有输入验证码的痛苦经历。但这种方法也并不是无敌的!通过现在很火的机器学习可以轻松的识别大部分的验证码!Google的reCAPTCHA是一种非常高级的验证码,但是听过通过模拟浏览器也是可以破解的。
6.ip限制
网站可能将识别的ip永久封杀,这种方式需要的人力比较大,而且误伤用户的代价也很高。但是破解办法却非常简单。目前代理池几乎是搞爬虫的标配了,甚至还有很多高匿代理等好用的东西。所以这基本上只能杀杀小爬虫。
7.网站内容反爬
有一些网站将网站内容用只有人类可以接收的形式来呈现(其实反爬就是区别对待人类和机器嘛)。比如将内容用图片的形式显示。但是近几年来人类和机器的差别越来越小,图片可以用OCR准确率非常高地去识别。
反爬总结
爬虫和反爬是典型的攻防双方的互相升级。但是我认为,这种升级不像军事,军事是无尽头的,但是爬虫和反爬是有尽头的。
爬虫的尽头就是浏览器,一旦使用浏览器,程序完全可以模拟真实用户发出请求,缺点是就是消耗资源,因为需要新开一个进程,解析DOM,运行客户端JavaScript代码。(chrome的node api在github开源仅仅两天,就拿到8k个star)
反爬的尽头就是像Google这种超级厉害的验证码,毕竟验证码的根本目的就是识别人类和机器的。
我正好有一个反爬做的非常好的例子。Google Arts Project项目是一个汇聚世界名画的艺术长廊,我比较喜欢里面的一些画,所以想下载一些(当然这是不对的),然后发现这个网站反爬做的相当好(因为版权属于收藏作品的博物馆,所以Google Arts Project肯定不会提供下载),要下载几乎是不可能的。我有点不服,开始用各种手段试图下载原图。尝试了一番,发现这个网站block掉了鼠标右键功能、审查元素发现图片并不是一个常规的图片、追踪网络包发现原图竟然不是一次网络请求拿到的,而是分成了好几次请求base64编码的字符流每次请求图片的一部分,然后在客户端组装起来图片!当然在客户端的代码也是经过加密和混淆的!这完全可以作为反爬的教科书了,既没有误伤用户,又让爬虫无法下手。
图片每次只请求部分
四、职业道德
成规模的爬虫一般都会使用集群,一般的小网站服务器规模可能不如爬虫集群的规模大。所以很多时候我们最好对要爬的网站限制一下频率。否则这些爬虫就相当于DoS攻击集群了!一般的网站都会有robots.txt可以参考。
好了,总结来说,写爬虫需要经验积累,需要灵活的思路。比如说我之前就遇到过网站,需要验证码验证拿到一个token,可是通过看网络请求发现这个token长得很像一个时间戳,然后本地自己生成一个时间戳发现也是能用的!于是就这样绕过了验证码。所以多多积累和尝试,可以偷不少懒,嘿嘿。
另外爬虫也不是和我之前想的那样是一个枯燥无味的工作,比如我就发现了不少很垃圾,很搞笑的网站,乐趣也蛮多的。学到的东西也不少。万变不离其宗嘛。
thymleaf和前端三大框架开发有什么区别?
主流的Java模板引擎
Thymeleaf
Thymeleaf是用于Web和独立环境的现代服务器端Java模板引擎。Thymeleaf的主要目标是将优雅的自然模板带到您的开发工作流程中—HTML能够在浏览器中正确显示,并且可以作为静态原型,从而在开发团队中实现更强大的协作。能够处理HTML,XML,JavaScript,CSS甚至纯文本。Thymeleaf的主要目标是提供一个优雅和高度可维护的创建模板的方式。Thymeleaf也是从一开始就设计(特别是HTML5)允许创建完全验证的模板。Spring Boot 官方推荐使用 thymeleaf 而不是 JSP。
Freemarker
FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库。轻量级模版引擎,不需要Servlet环境就可以很轻松的嵌入到应用程序中,能生成各种文本,如html,xml,java,等,入门简单,它是用java编写的,很多语法和java相似。
前端三大框架Vue
Vue.js是一套构建用户界面的渐进式框架。Vue 只关注视图层, 采用自底向上增量开发的设计。目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。
React
React 是一个用于构建用户界面的 JAVASCRIPT 库。React主要用于构建UI,很多人认为 React 是 MVC 中的 V(视图)。
Angular
AngularJS 是一个 JavaScript框架。它是一个以 JavaScript 编写的库。它可通过 <script> 标签添加到HTML 页面。通过 指令 扩展了 HTML,且通过 表达式 绑定数据到 HTML。AngularJS 是以一个 JavaScript 文件形式发布的,可通过 script 标签添加到网页中。
Java模板语言与前端框架区别Java模板语言依赖于后端,后端把数据绑定到页面的相应标签上,还要用相应的类来解析页面,也就是视图解析器,这样呈现出的页面才是绑定数据后的样子。
三大前端框架通过Js来操作,更多是HTML5页面与Js之间的交互,只专注于前端。
语法不同,也完全不是一个概念,页面出现Freemark、Thymeleaf语法,估计前端的人都看不懂也不知道数据哪里来的。前端的框架大都是基于JavaScript 的,Java 后端框架大都基于Java语言。
个人观点,欢迎大家批评指正,一起交流学习怎么把数据库里面的数据取出来转换成json格式?
可以使用fastjson解析器:
import com.alibaba.fastjson.JSON;public static void testStrToJSONObject(){Map<String,Object> m2 = new HashMap<String, Object>()
;m2.put("p1", "v1")
; m2.put("p2", "v2")
; m2.put("p3", "v3")
; m2.put("p4", "v4")
; m2.put("p5", "v5")
; System.out.println(JSON.toJSON(m2));}