Python库大全,建议收藏留用,不全你来打我
前言
学习Python,想必大家都是从爬虫开始的吧。毕竟网上类似的资源很丰富,开源项目也非常多。Python学习网络爬虫主要分3个大的版块:抓取,分析,存储。
当我们在浏览器中输入一个url后回车,后台会发生什么?
简单来说这段过程发生了以下四个步骤:
1.查找域名对应的IP地址。
2.向IP对应的服务器发送请求。
3.服务器响应请求,发回网页内容。
4.浏览器解析网页内容。
那么学习爬虫需要用到哪些库呢?
一、通用:
urllib | 网络库(stdlib) |
requests | 网络库 |
grab | 网络库(基于pycurl) |
pycurl | 网络库(绑定libcurl) |
urllib3 | Python HTTP库,安全连接池、支持文件post、可用性高 |
httplib2 | 网络库 |
RoboBrowser | 一个简单的、极具Python风格的Python库,无需独立的浏览器即可浏览网页 |
MechanicalSoup | 一个与网站自动交互Python库 |
mechanize | 有状态、可编程的Web浏览库 |
socket | 底层网络接口(stdlib) |
unirest for Python - Unirest | 是一套可用于多种语言的轻量级的HTTP库 |
hyper | Python的HTTP/2客户端 |
PySocks -SocksiPy | 更新并积极维护的版本,包括错误修复和一些其他的特征。作为socket模块的直接替换 |
二、网络爬虫的框架:
1.功能齐全的爬虫
grab | 网络爬虫框架(基于pycurl/multicur) |
scrapy | 网络爬虫框架(基于twisted),不支持Python3 |
pyspider | 一个强大的爬虫系统 |
cola | 一个分布式爬虫框架 |
2.其他
portia | 基于Scrapy的可视化爬虫 |
restkit | Python的HTTP资源工具包。它可以让你轻松地访问HTTP资源,并围绕它建立的对象 |
demiurge | 基于PyQuery的爬虫微框架 |
三、HTML/XML解析器
1.通用
lxml | C语言编写高效HTML XML处理库。支持XPath。cssselect-解析DOM树和CSS选择器 |
pyquery | 解析DOM树和Query选择器 |
BeautifulSoup | 低效HTML/ XML处理库,纯Python实现 |
html5lib | 根据WHATWG规范生成HTML/ XML文档的DOM。该规范被用在现在所有的浏览器上 |
feedparser | 解析RSS/ATOM feeds |
MarkupSafe | 为XML/HTML/XHTML提供了安全转义的字符串 |
xmltodict | 一个可以让你在处理XML时感觉像在处理JSON一样的Python模块 |
xhtml2pdf | 将HTML/CSS转换为PDF |
untangle | 轻松实现将XML文件转换为Python对象 |
2.清理
Bleach | 清理HTML (需要html5lib) |
sanitize | 为混乱的数据世界带来清明 |
四、文本处理
用于解析和操作简单文本的库
difflib | (Python标准库)帮助进行差异化比较 |
Levenshtein | 快速计算Levenshtein距离和字符串相似度 |
fuzzywuzzy | 模糊字符串匹配 |
esmre | 正则表达式加速器 |
ftfy | 自动整理Unicode文本,减少碎片化 |
五、自然语言处理
处理人类语言问题的库
NLTK | 编写Python程序来处理人类语言数据的最好平台 |
Pattern | Python的网络挖掘模块。他有自然语言处理工具,机器学习以及其它 |
TextBlob | 为深入自然语言处理任务提供了一致的API。是基于NLTK以及Pattern的巨人之肩上发展的 |
jieba | 中文分词工具 |
SnowNLP | 中文文本处理库 |
loso | 另一个中文分词库 |
六、浏览器自动化与仿真
selenium | 自动化真正的浏览器(Chrome浏览器,火狐浏览器,Opera浏览器,IE浏览器) |
Ghost.py | 对PyQt的webkit的封装(需要PyQT) |
Spynner | 对PyQt的webkit的封装(需要PyQT) |
Splinter | 通用API浏览器模拟器(selenium web驱动,Django客户端,Zope) |
七、多重处理
threading | Python标准库的线程运行。对于1/O密集型任务很有效。对于CPU绑定的任务没用,因为python GIL |
multiprocessing | 标准的Python库运行多进程 |
celery | 基于分布式消息传递的异步任务队列/作业队列 |
concurrent-futures | concurrent-futures模块为调用异步执行提供了一个高层次的接口 |
八、异步
异步网络编程库
asyncio | 异步1/O,时间循环,协同程序和任务 |
Twisted | 基于事件驱动的网络引擎框架 |
Tornado | 一个网络框架和异步网络库 |
pulsar | Python事件驱动的并发框架 |
diesel | Python的基于绿色事件的/O框架 |
gevent | 一个使用greenlet 的基于协程的Python网络库 |
eventlet | 有WSGl支持的异步框架 |
Tomorrow | 异步代码的奇妙的修饰语法 |
九、队列
celery | 基于分布式消息传递的异步任务队列/作业队列 |
huey | 小型多线程任务队列 |
mrq - Mr. Queue | 使用redis & Gevent的Python分布式工作任务队列 |
RQ | 基于Redis的轻量级任务队列管理器 |
simpleq | 一个简单的,可无限扩展,基于Amazon SQS的队列 |
python-gearman | Gearman的Python APl |
十、网页内容提取
提取网页内容的库
HTML | 页面的文本和元数据 |
newspaper | 用Python进行新闻提取、文章提取和内容策展 |
html2text | 将HTML转为Markdown格式文本 |
python-goose | HTML内容/文章提取器 |
lassie | 人性化的网页内容检索工具 |
十一、WebSoket
用于WebSocket的库
Crossbar | 开源的应用消息传递路由器(Python实现的用于Autobahn的WebSocket和WAMP) |
AutobahnPython | 提供了WebSocket协议和WAMP协议的Python实现并且开源 |
WebSocket-for-Python | Python 2和3以及PyPy的WebSocket客户端和服务器库 |
十二、DSN解析
dnsyo | 在全球超过1500个的DNS服务器上检查你的DNS |
Pycares-c-ares的接口 | c-ares是进行DNS请求和异步名称决议的c语言库 |
十三、计算机视觉
OpenCV | 开源计算机视觉库 |
SimpleCV | 用于照相机、图像处理、特征提取、格式转换的简介,可读性强的接口(基于OpencV) |
mahotas | 快速计算机图像处理算法(完全使用C++实现),完全基于 numpy的数组作为它的数据类型 |
十四、云计算
picloud | 云端执行python代码 |
Dominoup.com | 云端执行R,python和matlab代码 |
十五、Web开发的一些框架
1.Django
Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。
Django 框架的核心组件有:
-
用于创建模型的对象关系映射;
-
为最终用户设计较好的管理界面;
-
URL 设计;
-
设计者友好的模板语言;
-
缓存系统。
2.Flask
Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。
Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。
Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。
另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。
3.web2py
web2py是使用Python编写的一个开源web框架,并可以使用Python进行数据库驱动的web 应用方面的快速编程。如今有许多的web框架,包括Ruby on Rails, Django, Pylons和 Turbo Gears。
web2py具有非常良好的架构设计和代码实现,其不依赖于除了Python标准库之外的任何第三方软件包,另一方面web2py的架构使得其很容易和第三方软件包协作。web2py提供了一个基于web的IDE环境,您可以在这个环境中创建、修改、部署以及管理您的程序,大大提高您的工作效率。
4.Cherrpy
CherryPy是一种用于Python的、简单而非常有用的Web框架,其主要作用是以尽可能少的操作将Web服务器与Python代码连接,其功能包括内置的分析功能、灵活的插件系统以及一次运行多个HTTP服务器的功能,可与运行在最新版本的Python、Jython、 Android上。
是一种用于 Python 的、简单而又非常有用的 Web 框架。它所做的全部工作就是以尽可能少的忙乱将 Web 服务器与您的 Python 代码连接。它并不决定使用哪些其他工具,所以您可以从自己的角度自由地选择模板系统、数据库映射程序或者其他工具。
关于框架的选择误区
在框架的选择问题上,许多人很容易就陷入了下面两个误区中而不自知:哪个框架最好——世上没有最好的框架,只有最适合你自己、最适合你的团队的框架。有的人还过分关注性能——其实大部分人是没必要太关心框架的性能的,因为你开发的网站根本就是个小站,能上1万的IP的网站已经不多了,上10万的更是很少很少。编程语言选择也是一个道理,你的团队Python最熟就用Python好了,如果最熟悉的是Ruby那就用Ruby好了,编程语言、框架都只是工具,能多、快、好、省的干完活就是好东西。
感谢每一位愿意读完我文章的人,创作是一件非常值得持续投入的事情,因为你们每一次的支持都是对我极大的肯定!
我之前花了几千块钱报班,得到了很多外面没有的学习资料,比如说Python的学习视频、学习路线、小项目等等,我现在基本上用不上了,如果你用得到的话,可以去看我主页。