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私有属性和方法实例分析
Jan 15 Python
详解Python的collections模块中的deque双端队列结构
Jul 07 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
Apr 28 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
Jul 09 Python
Python 实现域名解析为ip的方法
Feb 14 Python
python实现字符串完美拆分split()的方法
Jul 16 Python
python匿名函数用法实例分析
Aug 03 Python
pytorch sampler对数据进行采样的实现
Dec 31 Python
Python处理PDF与CDF实例
Feb 26 Python
Windows下Anaconda和PyCharm的安装与使用详解
Apr 23 Python
python opencv 实现读取、显示、写入图像的方法
Jun 08 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
Jan 08 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输出Excel文件类
2010/02/08 PHP
PHP使用ODBC连接数据库的方法
2015/07/18 PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
2021/03/09 PHP
javascript 函数使用说明
2010/04/07 Javascript
javascript new fun的执行过程
2010/08/05 Javascript
JS随即打乱数组实现代码
2012/12/03 Javascript
Js 导出table内容到Excel的简单实例
2013/11/19 Javascript
javascript生成不重复的随机数
2015/07/17 Javascript
分享纯手写漂亮的表单验证
2015/11/19 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
2016/12/16 Javascript
vue2.0s中eventBus实现兄弟组件通信的示例代码
2017/10/25 Javascript
详解vue-admin和后端(flask)分离结合的例子
2018/02/12 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
2018/12/24 Javascript
深入理解使用Vue实现Context-Menu的思考与总结
2019/03/09 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
2020/07/16 Javascript
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
2017/06/21 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
2019/06/20 Python
基于Python批量生成指定尺寸缩略图代码实例
2019/11/20 Python
python logging模块的使用详解
2020/10/23 Python
全球最大的服务市场:Fiverr
2017/01/03 全球购物
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
美国克罗格超市在线购物:Kroger
2019/06/21 全球购物
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
营业员实习自我鉴定
2013/12/07 职场文书
什么样的创业计划书可行性高?
2014/02/01 职场文书
执行总经理岗位职责
2014/02/03 职场文书
员工年终自我评价
2014/09/14 职场文书
2014年最新个人对照检查材料范文
2014/09/25 职场文书
2014收银员工作总结范文
2014/12/16 职场文书
干部培训简讯
2015/07/20 职场文书
python实现简单反弹球游戏
2021/04/12 Python
德劲DE1102数字调谐收音机机评
2022/04/07 无线电
java实现面板之间切换功能
2022/06/10 Java/Android
解决Git推送错误non-fast-forward的方法
2022/06/25 Servers