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实现按特定格式对文件进行读写的方法示例
Nov 30 Python
python 阶乘累加和的实例
Feb 01 Python
Pycharm如何打断点的方法步骤
Jun 13 Python
解决Django layui {{}}冲突的问题
Aug 29 Python
Python自动化完成tb喵币任务的操作方法
Oct 30 Python
python使用SQLAlchemy操作MySQL
Jan 02 Python
Python和Bash结合在一起的方法
Nov 13 Python
python中threading和queue库实现多线程编程
Feb 06 Python
tensorflow2.0教程之Keras快速入门
Feb 20 Python
Python基础之Socket通信原理
Apr 22 Python
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
Oct 16 Python
关于python中模块和重载的问题
Nov 02 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在字符串中查找指定字符串并删除的代码
2008/10/02 PHP
phpMyAdmin出现无法载入 mcrypt 扩展,请检查PHP配置的解决方法
2012/03/26 PHP
php str_getcsv把字符串解析为数组的实现方法
2017/04/05 PHP
js 通用javascript函数库整理
2011/08/14 Javascript
Javascript浅谈之引用类型
2013/12/18 Javascript
js实现鼠标感应图片展示的方法
2015/02/27 Javascript
jQuery实现仿Google首页拖动效果的方法
2015/05/04 Javascript
浅谈javascript中的constructor
2016/06/08 Javascript
jQuery ajax方法传递中文时出现中文乱码的解决方法
2016/07/25 Javascript
BootStrap 可编辑表Table格
2016/11/24 Javascript
微信小程序 radio单选框组件详解及实例代码
2017/01/10 Javascript
Angularjs实现搜索关键字高亮显示效果
2017/01/17 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
mint-ui在vue中的使用示例
2018/04/05 Javascript
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
vue 实现图片懒加载功能
2020/12/31 Vue.js
Python的面向对象思想分析
2015/01/14 Python
Python中List.count()方法的使用教程
2015/05/20 Python
详解Python中表达式i += x与i = i + x是否等价
2017/02/08 Python
python利用拉链法实现字典方法示例
2017/03/25 Python
python之pandas用法大全
2018/03/13 Python
python3.6利用pyinstall打包py为exe的操作实例
2018/10/31 Python
Anaconda+Pycharm环境下的PyTorch配置方法
2020/03/13 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
2020/04/03 Python
python pillow库的基础使用教程
2021/01/13 Python
全球性的在线时尚男装零售商:boohooMAN
2016/12/17 全球购物
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
大学生优秀自荐信范文
2014/02/25 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
党的群众路线对照检查材料思想汇报
2014/09/25 职场文书
作风建设年度心得体会
2014/10/29 职场文书
教师党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
房地产销售经理岗位职责
2015/02/02 职场文书
新闻发布会新闻稿
2015/07/17 职场文书
pandas求平均数和中位数的方法实例
2021/08/04 Python