Python应用库大全总结


Posted in Python onMay 30, 2018

学Python,想必大家都是从爬虫开始的吧。毕竟网上类似的资源很丰富,开源项目也非常多。

Python学习网络爬虫主要分3个大的版块:抓取,分析,存储

当我们在浏览器中输入一个url后回车,后台会发生什么?

简单来说这段过程发生了以下四个步骤:

  1. 查找域名对应的IP地址。
  2. 向IP对应的服务器发送请求。
  3. 服务器响应请求,发回网页内容。
  4. 浏览器解析网页内容。

网络爬虫要做的,简单来说,就是实现浏览器的功能。通过指定url,直接返回给用户所需要的数据,而不需要一步步人工去操纵浏览器获取。

抓取这一步,你要明确要得到的内容是什么?是HTML源码,还是Json格式的字符串等。将得到内容逐一解析就好。具体的如何解析,以及如何处理数据,文章后面提供了非常详细的且功能强大的开源库列表。

当然了,爬去别人家的数据,很有可能会遭遇反爬虫机制的,怎么办?使用代理。

适用情况:限制IP地址情况,也可解决由于“频繁点击”而需要输入验证码登陆的情况。

这种情况最好的办法就是维护一个代理IP池,网上有很多免费的代理IP,良莠不齐,可以通过筛选找到能用的。

对于“频繁点击”的情况,我们还可以通过限制爬虫访问网站的频率来避免被网站禁掉。

有些网站会检查你是不是真的浏览器访问,还是机器自动访问的。这种情况,加上User-Agent,表明你是浏览器访问即可。有时还会检查是否带Referer信息还会检查你的Referer是否合法,一般再加上Referer。也就是伪装成浏览器,或者反“反盗链”。

对于网站有验证码的情况,我们有三种办法:

使用代理,更新IP。

使用cookie登陆。

验证码识别。

接下来我们重点聊聊验证码识别。这个python q-u-n 227--435---450就是小编期待大家一起交流讨论,各种入门资料啊,进阶资料啊,框架资料啊 免费领取

可以利用开源的Tesseract-OCR系统进行验证码图片的下载及识别,将识别的字符传到爬虫系统进行模拟登陆。当然也可以将验证码图片上传到打码平台上进行识别。如果不成功,可以再次更新验证码识别,直到成功为止。

好了,爬虫就简单聊到这儿,有兴趣的朋友可以去网上搜索更详细的内容。

文末附上本文重点:实用Python库大全。

网络

urllib -网络库(stdlib)。

requests -网络库。

grab ? 网络库(基于pycurl)。

pycurl ? 网络库(绑定libcurl)。

urllib3 ? Python HTTP库,安全连接池、支持文件post、可用性高。

httplib2 ? 网络库。

RoboBrowser ? 一个简单的、极具Python风格的Python库,无需独立的浏览器即可浏览网页。

MechanicalSoup -一个与网站自动交互Python库。

mechanize -有状态、可编程的Web浏览库。

socket ? 底层网络接口(stdlib)。

网络爬虫框架

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

scrapy ? 网络爬虫框架。

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

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

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提供了安全转义的字符串。

文本处理

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

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标准库的线程运行。对于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代码

网页内容提取

提取网页内容的库。

HTML页面的文本和元数据

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

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

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

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

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有很多Web开发框架,大而全的开发框架非Django莫属,用得也最广泛.有很多公司有使用Django框架,如某狐,某讯等。以简洁著称的web.py,flask都非常易于上手,以异步高性能著称的tornado,源代码写得美如画,知乎,Quora都在用。

Python 相关文章推荐
python操作摄像头截图实现远程监控的例子
Mar 25 Python
用Python制作简单的钢琴程序的教程
Apr 01 Python
pandas Dataframe行列读取的实例
Jun 08 Python
详解Python是如何实现issubclass的
Jul 24 Python
Django url,从一个页面调到另个页面的方法
Aug 21 Python
Django框架教程之中间件MiddleWare浅析
Dec 29 Python
Python用input输入列表的实例代码
Feb 07 Python
python中数据库like模糊查询方式
Mar 02 Python
python 装饰器功能与用法案例详解
Mar 06 Python
python 双循环遍历list 变量判断代码
May 04 Python
Python reques接口测试框架实现代码
Jul 28 Python
Python实现自动签到脚本功能
Aug 20 Python
Django中反向生成models.py的实例讲解
May 30 #Python
Python RabbitMQ消息队列实现rpc
May 30 #Python
python日期时间转为字符串或者格式化输出的实例
May 29 #Python
python 集合 并集、交集 Series list set 转换的实例
May 29 #Python
使用Django启动命令行及执行脚本的方法
May 29 #Python
python3中的md5加密实例
May 29 #Python
python 获取字符串MD5值方法
May 29 #Python
You might like
PHP+DBM的同学录程序(3)
2006/10/09 PHP
初学PHP的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
php中JSON的使用与转换
2015/01/14 PHP
PHP简单生成缩略图相册的方法
2015/07/29 PHP
在JQuery dialog里的服务器控件 事件失效问题
2010/12/08 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
原生js实现半透明遮罩层效果具体代码
2013/06/06 Javascript
iframe里使用JavaScript控制主页转向的方法
2015/04/03 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
jQuery qrcode生成二维码的方法
2016/04/03 Javascript
js 将input框中的输入自动转化成半角大写(税号输入框)
2017/02/16 Javascript
基于mpvue的小程序项目搭建的步骤
2018/05/22 Javascript
JavaScript定时器设置、使用与倒计时案例详解
2019/07/08 Javascript
[33:28]完美世界DOTA2联赛PWL S3 PXG vs GXR 第三场 12.19
2020/12/24 DOTA
Python实现Sqlite将字段当做索引进行查询的方法
2016/07/21 Python
利用Python破解验证码实例详解
2016/12/08 Python
python入门教程之识别验证码
2017/03/04 Python
Python Web程序部署到Ubuntu服务器上的方法
2018/02/22 Python
Python Json模块中dumps、loads、dump、load函数介绍
2018/05/15 Python
Python使用pyodbc访问数据库操作方法详解
2018/07/05 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
Pytorch训练过程出现nan的解决方式
2020/01/02 Python
python 实现将Numpy数组保存为图像
2020/01/09 Python
在python3中实现更新界面
2020/02/21 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
酒店管理专业学生求职信
2013/09/27 职场文书
单位在职证明范本
2014/01/09 职场文书
满月酒主持词
2014/03/27 职场文书
社区反邪教工作方案
2014/06/16 职场文书
教师批评与自我批评
2014/10/15 职场文书
农村婚礼司仪主持词
2015/06/29 职场文书
商务信函英语问候语
2015/11/10 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python
Nginx反向代理至go-fastdfs案例讲解
2021/08/02 Servers