Python 爬虫的工具列表大全


Posted in Python onJanuary 31, 2016

网络

  • 通用

    • 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模块的直接替换。

  • 异步

    • treq ? 类似于requests的API(基于twisted)。

    • aiohttp ? asyncio的HTTP客户端/服务器(PEP-3156)。

网络爬虫框架

  • 功能齐全的爬虫

    • grab ? 网络爬虫框架(基于pycurl/multicur)。

    • scrapy ? 网络爬虫框架(基于twisted),不支持Python3。

    • pyspider ? 一个强大的爬虫系统。

    • cola ? 一个分布式爬虫框架。

  • 其他

    • portia ? 基于Scrapy的可视化爬虫。

    • restkit ? Python的HTTP资源工具包。它可以让你轻松地访问HTTP资源,并围绕它建立的对象。

    • demiurge ? 基于PyQuery的爬虫微框架。

HTML/XML解析器

  • 通用

    • lxml ? C语言编写高效HTML/ XML处理库。支持XPath。

    • cssselect ? 解析DOM树和CSS选择器。

    • pyquery ? 解析DOM树和jQuery选择器。

    • 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对象。

  • 清理

    • Bleach ? 清理HTML(需要html5lib)。

    • sanitize ? 为混乱的数据世界带来清明。

文本处理

用于解析和操作简单文本的库。

  • 通用

  • difflib ? (Python标准库)帮助进行差异化比较。

  • Levenshtein ? 快速计算Levenshtein距离和字符串相似度。

  • fuzzywuzzy ? 模糊字符串匹配。

  • esmre ? 正则表达式加速器。

  • ftfy ? 自动整理Unicode文本,减少碎片化。

  • 转换

  • unidecode ? 将Unicode文本转为ASCII。

  • 字符编码

  • uniout ? 打印可读字符,而不是被转义的字符串。

  • chardet ? 兼容 Python的2/3的字符编码器。

  • xpinyin ? 一个将中国汉字转为拼音的库。

  • pangu.py ? 格式化文本中CJK和字母数字的间距。

  • Slug化

  • awesome-slugify ? 一个可以保留unicode的Python slugify库。

  • python-slugify ? 一个可以将Unicode转为ASCII的Python slugify库。

  • unicode-slugify ? 一个可以将生成Unicode slugs的工具。

  • pytils ? 处理俄语字符串的简单工具(包括pytils.translit.slugify)。

  • 通用解析器

  • PLY ? lex和yacc解析工具的Python实现。

  • pyparsing ? 一个通用框架的生成语法分析器。

  • 人的名字

  • python-nameparser -解析人的名字的组件。

  • 电话号码

  • phonenumbers -解析,格式化,存储和验证国际电话号码。

  • 用户代理字符串

  • python-user-agents ? 浏览器用户代理的解析器。

  • HTTP Agent Parser ? Python的HTTP代理分析器。

特定格式文件处理

解析和处理特定文本格式的库。

  • 通用

  • tablib ? 一个把数据导出为XLS、CSV、JSON、YAML等格式的模块。

  • textract ? 从各种文件中提取文本,比如 Word、PowerPoint、PDF等。

  • messytables ? 解析混乱的表格数据的工具。

  • rows ? 一个常用数据接口,支持的格式很多(目前支持CSV,HTML,XLS,TXT ? 将来还会提供更多!)。

  • Office

  • python-docx ? 读取,查询和修改的Microsoft Word2007/2008的docx文件。

  • xlwt / xlrd ? 从Excel文件读取写入数据和格式信息。

  • XlsxWriter ? 一个创建Excel.xlsx文件的Python模块。

  • xlwings ? 一个BSD许可的库,可以很容易地在Excel中调用Python,反之亦然。

  • openpyxl ? 一个用于读取和写入的Excel2010 XLSX/ XLSM/ xltx/ XLTM文件的库。

  • Marmir ? 提取Python数据结构并将其转换为电子表格。

  • PDF

  • PDFMiner ? 一个从PDF文档中提取信息的工具。

  • PyPDF2 ? 一个能够分割、合并和转换PDF页面的库。

  • ReportLab ? 允许快速创建丰富的PDF文档。

  • pdftables ? 直接从PDF文件中提取表格。

  • Markdown

  • Python-Markdown ? 一个用Python实现的John Gruber的Markdown。

  • Mistune ? 速度最快,功能全面的Markdown纯Python解析器。

  • markdown2 ? 一个完全用Python实现的快速的Markdown。

  • YAML

  • PyYAML ? 一个Python的YAML解析器。

  • CSS

  • cssutils ? 一个Python的CSS库。

  • ATOM/RSS

  • feedparser ? 通用的feed解析器。

  • SQL

  • sqlparse ? 一个非验证的SQL语句分析器。

  • HTTP

  • HTTP

  • http-parser ? C语言实现的HTTP请求/响应消息解析器。

  • 微格式

  • opengraph ? 一个用来解析Open Graph协议标签的Python模块。

  • 可移植的执行体

  • pefile ? 一个多平台的用于解析和处理可移植执行体(即PE)文件的模块。

  • PSD

  • psd-tools ? 将Adobe Photoshop PSD(即PE)文件读取到Python数据结构。

自然语言处理

处理人类语言问题的库。

  • NLTK -编写Python程序来处理人类语言数据的最好平台。

  • Pattern ? Python的网络挖掘模块。他有自然语言处理工具,机器学习以及其它。

  • TextBlob ? 为深入自然语言处理任务提供了一致的API。是基于NLTK以及Pattern的巨人之肩上发展的。

  • jieba ? 中文分词工具。

  • SnowNLP ? 中文文本处理库。

  • loso ? 另一个中文分词库。

  • genius ? 基于条件随机域的中文分词。

  • langid.py ? 独立的语言识别系统。

  • Korean ? 一个韩文形态库。

  • pymorphy2 ? 俄语形态分析器(词性标注+词形变化引擎)。

  • PyPLN ? 用Python编写的分布式自然语言处理通道。这个项目的目标是创建一种简单的方法使用NLTK通过网络接口处理大语言库。

浏览器自动化与仿真

  • selenium ? 自动化真正的浏览器(Chrome浏览器,火狐浏览器,Opera浏览器,IE浏览器)。

  • Ghost.py ? 对PyQt的webkit的封装(需要PyQT)。

  • Spynner ? 对PyQt的webkit的封装(需要PyQT)。

  • Splinter ? 通用API浏览器模拟器(selenium web驱动,Django客户端,Zope)。

多重处理

  • threading ? Python标准库的线程运行。对于I/O密集型任务很有效。对于CPU绑定的任务没用,因为python GIL。

  • multiprocessing ? 标准的Python库运行多进程。

  • celery ? 基于分布式消息传递的异步任务队列/作业队列。

  • concurrent-futures ? concurrent-futures 模块为调用异步执行提供了一个高层次的接口。

异步

异步网络编程库

  • asyncio ? (在Python 3.4 +版本以上的 Python标准库)异步I/O,时间循环,协同程序和任务。

  • Twisted ? 基于事件驱动的网络引擎框架。

  • Tornado ? 一个网络框架和异步网络库。

  • pulsar ? Python事件驱动的并发框架。

  • diesel ? Python的基于绿色事件的I/O框架。

  • gevent ? 一个使用greenlet 的基于协程的Python网络库。

  • eventlet ? 有WSGI支持的异步框架。

  • Tomorrow ? 异步代码的奇妙的修饰语法。

队列

  • celery ? 基于分布式消息传递的异步任务队列/作业队列。

  • huey ? 小型多线程任务队列。

  • mrq ? Mr. Queue ? 使用redis & Gevent 的Python分布式工作任务队列。

  • RQ ? 基于Redis的轻量级任务队列管理器。

  • simpleq ? 一个简单的,可无限扩展,基于Amazon SQS的队列。

  • python-gearman ? Gearman的Python API。

云计算

  • picloud ? 云端执行Python代码。

  • dominoup.com ? 云端执行R,Python和matlab代码。

电子邮件

电子邮件解析库

  • flanker ? 电子邮件地址和Mime解析库。

  • Talon ? Mailgun库用于提取消息的报价和签名。

网址和网络地址操作

解析/修改网址和网络地址库。

  • URL

    • furl ? 一个小的Python库,使得操纵URL简单化。

    • purl ? 一个简单的不可改变的URL以及一个干净的用于调试和操作的API。

    • urllib.parse ? 用于打破统一资源定位器(URL)的字符串在组件(寻址方案,网络位置,路径等)之间的隔断,为了结合组件到一个URL字符串,并将“相对URL”转化为一个绝对URL,称之为“基本URL”。

    • tldextract ? 从URL的注册域和子域中准确分离TLD,使用公共后缀列表。

  • 网络地址

    • netaddr ? 用于显示和操纵网络地址的Python库。

网页内容提取

提取网页内容的库。

  • HTML页面的文本和元数据

    • newspaper ? 用Python进行新闻提取、文章提取和内容策展。

    • html2text ? 将HTML转为Markdown格式文本。

    • python-goose ? HTML内容/文章提取器。

    • lassie ? 人性化的网页内容检索工具

    • micawber ? 一个从网址中提取丰富内容的小库。

    • sumy -一个自动汇总文本文件和HTML网页的模块

    • Haul ? 一个可扩展的图像爬虫。

    • python-readability ? arc90 readability工具的快速Python接口。

    • scrapely ? 从HTML网页中提取结构化数据的库。给出了一些Web页面和数据提取的示例,scrapely为所有类似的网页构建一个分析器。

  • 视频

    • youtube-dl ? 一个从YouTube下载视频的小命令行程序。

    • you-get ? Python3的YouTube、优酷/ Niconico视频下载器。

  • 维基

    • WikiTeam ? 下载和保存wikis的工具。

WebSocket

用于WebSocket的库。

  • Crossbar ? 开源的应用消息传递路由器(Python实现的用于Autobahn的WebSocket和WAMP)。

  • AutobahnPython ? 提供了WebSocket协议和WAMP协议的Python实现并且开源。

  • WebSocket-for-Python ? Python 2和3以及PyPy的WebSocket客户端和服务器库。

DNS解析

  • dnsyo ? 在全球超过1500个的DNS服务器上检查你的DNS。

  • pycares ? c-ares的接口。c-ares是进行DNS请求和异步名称决议的C语言库。

计算机视觉

  • OpenCV ? 开源计算机视觉库。

  • SimpleCV ? 用于照相机、图像处理、特征提取、格式转换的简介,可读性强的接口(基于OpenCV)。

  • mahotas ? 快速计算机图像处理算法(完全使用 C++ 实现),完全基于 numpy 的数组作为它的数据类型。

代理服务器

  • shadowsocks ? 一个快速隧道代理,可帮你穿透防火墙(支持TCP和UDP,TFO,多用户和平滑重启,目的IP黑名单)。

  • tproxy ? tproxy是一个简单的TCP路由代理(第7层),基于Gevent,用Python进行配置。

其他Python工具列表

  • awesome-python

  • pycrumbs

  • python-github-projects

  • python_reference

  • pythonidae

Python 相关文章推荐
Python中的anydbm模版和shelve模版使用指南
Jul 09 Python
Python中__init__.py文件的作用详解
Sep 18 Python
python使用标准库根据进程名如何获取进程的pid详解
Oct 31 Python
Python使用三种方法实现PCA算法
Dec 12 Python
浅谈dataframe中更改列属性的方法
Jul 10 Python
Python常用爬虫代码总结方便查询
Feb 25 Python
使用Python Pandas处理亿级数据的方法
Jun 24 Python
python小程序实现刷票功能详解
Jul 17 Python
wxPython+Matplotlib绘制折线图表
Nov 19 Python
pytorch 自定义参数不更新方式
Jan 06 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
Apr 20 Python
django模型类中,null=True,blank=True用法说明
Jul 09 Python
python在不同层级目录import模块的方法
Jan 31 #Python
在Python中移动目录结构的方法
Jan 31 #Python
python嵌套函数使用外部函数变量的方法(Python2和Python3)
Jan 31 #Python
python 爬取微信文章
Jan 30 #Python
python生成验证码图片代码分享
Jan 28 #Python
详解Python网络爬虫功能的基本写法
Jan 28 #Python
Python3实现Web网页图片下载
Jan 28 #Python
You might like
PHP_MySQL教程-第一天
2007/03/18 PHP
php实现递归与无限分类的方法
2015/02/16 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
jquery表格内容筛选实现思路及代码
2013/04/16 Javascript
ExtJS中设置下拉列表框不可编辑的方法
2014/05/07 Javascript
jQuery的text()方法用法分析
2014/12/20 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
2015/03/12 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
jquery ajax双击div可直接修改div中的内容
2016/03/04 Javascript
动态加载js文件简单示例
2016/04/21 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
js实现PC端根据IP定位当前城市地理位置
2017/02/22 Javascript
JS文件/图片从电脑里面拖拽到浏览器上传文件/图片
2017/03/08 Javascript
javascript九宫格图片随机打乱位置的实现方法
2017/03/15 Javascript
vuejs2.0子组件改变父组件的数据实例
2017/05/10 Javascript
详解webpack打包vue时提取css
2017/05/26 Javascript
JS字符串常用操作方法实例小结
2019/06/24 Javascript
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
js实现开关灯效果
2020/03/30 Javascript
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
2020/05/12 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
Python中利用原始套接字进行网络编程的示例
2015/05/04 Python
Python使用cookielib模块操作cookie的实例教程
2016/07/12 Python
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
python 监控logcat关键字功能
2020/09/04 Python
生日寿宴答谢词
2014/01/19 职场文书
装饰活动策划方案
2014/02/11 职场文书
《威尼斯的小艇》教学反思
2014/02/17 职场文书
一份恶作剧的检讨书
2014/09/13 职场文书
2014各大专业毕业生自我评价
2014/09/17 职场文书
学校食品安全责任书
2015/01/29 职场文书
党支部工作总结2015
2015/04/01 职场文书
监护人证明
2015/06/19 职场文书
golang interface判断为空nil的实现代码
2021/04/24 Golang
Golang 语言控制并发 Goroutine的方法
2021/06/30 Golang
Linux在两个服务器直接传文件的操作方法
2022/08/05 Servers