Python,想必大家都是从爬虫开始的吧。毕竟网上类似的资源很丰富,开源项目也非常多。
Python学习网络爬虫主要分3个大的版块:抓取,分析,存储
当我们在浏览器中输入一个url后回车,后台会发生什么?
简单来说这段过程发生了以下四个步骤:
查找域名对应的IP地址。
向IP对应的服务器发送请求。
服务器响应请求,发回网页内容。
浏览器解析网页内容。
那么学习爬虫需要掌握哪些库呢?
通用:
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模块的直接替换。
网络爬虫框架
功能齐全的爬虫
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文本,减少碎片化。
自然语言处理
处理人类语言问题的库。
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 的数组作为它的数据类型。
web开发的一些框架
1.Django
Django是一个开源的Web应用框架,由Python写成,支持许多数据库引擎,可以让Web开发变得迅速和可扩展,并会不断的版本更新以匹配Python最新版本,如果是新手程序员,可以从这个框架入手。
2.Flask
Flask是一个轻量级的Web应用框架, 使用Python编写。基于 WerkzeugWSGI工具箱和 Jinja2模板引擎。使用 BSD 授权。
Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。然而,Flask保留了扩增的弹性,可以用Flask-extension加入这些功 能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术。
3.Web2py
Web2py是一个用Python语言编写的免费的开源Web框架,旨在敏捷快速的开发Web应用,具有快速、可扩展、安全以及可移植的数据库驱动的应用,遵循LGPLv3开源协议。
Web2py提供一站式的解决方案,整个开发过程都可以在浏览器上进行,提供了Web版的在线开发,HTML模版编写,静态文件的上传,数据库的编写的功能。其它的还有日志功能,以及一个自动化的admin接口。
4.Tornado
Tornado即是一个Web server(对此本文不作详述),同时又是一个类web.py的micro-framework,作为框架Tornado的思想主要来源于Web.py,大家在Web.py的网站首页也可以看到Tornado的大佬Bret Taylor的这么一段话(他这里说的FriendFeed用的框架跟Tornado可以看作是一个东西):
“[web.py inspired the] Web framework we use at FriendFeed [and] the webapp framework that ships with App Engine…”
因为有这层关系,后面不再单独讨论Tornado。
5.CherryPy
CherryPy是一种用于Python的、简单而非常有用的Web框架,其主要作用是以尽可能少的操作将Web服务器与Python代码连接,其功能包括内置的分析功能、灵活的插件系统以及一次运行多个HTTP服务器的功能,可与运行在最新版本的Python、Jython、Android上。
关于框架的选择误区
在框架的选择问题上,许多人很容易就陷入了下面两个误区中而不自知:哪个框架最好——世上没有最好的框架,只有最适合你自己、最适合你的团队的框架。编程语言选择也是一个道理,你的团队Python最熟就用Python好了,如果最熟悉的是Ruby那就用Ruby好了,编程语言、框架都只是工具,能多、快、好、省的干完活就是好东西。
过分关注性能——其实大部分人是没必要太关心框架的性能的,因为你开发的网站根本就是个小站,能上1万的IP的网站已经不多了,上10万的更是很少很少。在没有一定的访问量前谈性能其实是没有多大意义的,因为你的CPU和内存一直就闲着呢。
写在最后
前几天有私信我要Python的学习资料,我连夜整理了一些有深度的Python教程和参考资料,从入门到高级的都有,文件已经打包好了,正在学习Python的同学可以免费下载学习学习。文件下载方式:点击我的头像,关注后私信回复“资料”即可下载。首先把代码撸起来!首先把代码撸起来!首先把代码撸起来!重要的事说三遍,哈哈。“编程是门手艺活”。什么意思?得练啊。
mage.png
学Python,想必大家都是从爬虫开始的吧。毕竟网上类似的资源很丰富,开源项目也非常多。
Python学习网络爬虫主要分3个大的版块:抓取,分析,存储
当我们在浏览器中输入一个url后回车,后台会发生什么?
简单来说这段过程发生了以下四个步骤:
那么学习爬虫需要掌握哪些库呢?
通用:
网络爬虫框架
HTML/XML解析器
文本处理
用于解析和操作简单文本的库。
自然语言处理
处理人类语言问题的库。
浏览器自动化与仿真
多重处理
异步
异步网络编程库
队列
云计算
网页内容提取
提取网页内容的库。
WebSocket
用于WebSocket的库。
DNS解析
计算机视觉
web开发的一些框架
1.Django
Django是一个开源的Web应用框架,由Python写成,支持许多数据库引擎,可以让Web开发变得迅速和可扩展,并会不断的版本更新以匹配Python最新版本,如果是新手程序员,可以从这个框架入手。
2.Flask
Flask是一个轻量级的Web应用框架, 使用Python编写。基于 WerkzeugWSGI工具箱和 Jinja2模板引擎。使用 BSD 授权。
Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。然而,Flask保留了扩增的弹性,可以用Flask-extension加入这些功 能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术。
3.Web2py
Web2py是一个用Python语言编写的免费的开源Web框架,旨在敏捷快速的开发Web应用,具有快速、可扩展、安全以及可移植的数据库驱动的应用,遵循LGPLv3开源协议。
Web2py提供一站式的解决方案,整个开发过程都可以在浏览器上进行,提供了Web版的在线开发,HTML模版编写,静态文件的上传,数据库的编写的功能。其它的还有日志功能,以及一个自动化的admin接口。
4.Tornado
Tornado即是一个Web server(对此本文不作详述),同时又是一个类web.py的micro-framework,作为框架Tornado的思想主要来源于Web.py,大家在Web.py的网站首页也可以看到Tornado的大佬Bret Taylor的这么一段话(他这里说的FriendFeed用的框架跟Tornado可以看作是一个东西):
“[web.py inspired the] Web framework we use at FriendFeed [and] the webapp framework that ships with App Engine…”
因为有这层关系,后面不再单独讨论Tornado。
5.CherryPy
CherryPy是一种用于Python的、简单而非常有用的Web框架,其主要作用是以尽可能少的操作将Web服务器与Python代码连接,其功能包括内置的分析功能、灵活的插件系统以及一次运行多个HTTP服务器的功能,可与运行在最新版本的Python、Jython、Android上。
关于框架的选择误区
在框架的选择问题上,许多人很容易就陷入了下面两个误区中而不自知:哪个框架最好——世上没有最好的框架,只有最适合你自己、最适合你的团队的框架。编程语言选择也是一个道理,你的团队Python最熟就用Python好了,如果最熟悉的是Ruby那就用Ruby好了,编程语言、框架都只是工具,能多、快、好、省的干完活就是好东西。
过分关注性能——其实大部分人是没必要太关心框架的性能的,因为你开发的网站根本就是个小站,能上1万的IP的网站已经不多了,上10万的更是很少很少。在没有一定的访问量前谈性能其实是没有多大意义的,因为你的CPU和内存一直就闲着呢。
最后,学习python可以关注我们哦
习 Pyt hon,大概 每个人 都是从 爬虫 开始吧 。
网络 上类似 的资源 毕竟 很丰富 ,开源项目 也很多 。
Pyt hon学习网络 爬行 器主要 分为 3大块 :抓取 、分析 、存储 。
在浏览器 中输入 url 后回车 时,会出现 什么情况 ?
简而言之 ,这个 过程 分为 以下 四个 步骤 :
找出 域名 对应 的IP地址 。
将请求 发送到 IP 对应 的服务器 。
伺服器 回应 要求 ,返回 网页内容 。
浏览者 分析 网页内容 。
因此 ,研究 爬行动物 需要 掌握 哪些 库呢?
一般性 :
1.url lib-Web 库(stdlib )
2re quests -Netwo rk库。
3.grab -基于 pycurl 的网络 库。
4p ycurl -Netwo rkLibrary (绑定 libcurl )。
url lib3-Pyt honHTT P库,安全 的连接池 ,post 支持 文件 ,高可用性 。
6.http lib2-Netwo rkLibrary 。
7. RoboBrows er ——一个 简单 的、极具 Pyt hon风格 的Pyt hon库,不需要 单独 使用 浏览器 就可以在网上 浏览 。
8.MechanicalSoup-Pyt hon库与网站 自动 交互 。
9m echanize-有状态 的,可编程 的网络 浏览 库。
10 .soc ke t-stdlib ,即底层 网络接口 。
11 .Unirest for Pyt hon–Unirest 是一组 轻量级 HTT P库,可用于 多种语言 。
12 .hyp er -HTT P/2客户机 Pyt hon。
13 .PySocks——SocksiPy的最新版本 ,积极 维护 ,包括 修复 错误 ,以及 其他 一些 特性 。
直接 替换 为soc ke t模块 。
网路 爬行 器框架
一、全功能 爬虫 。
Grab -网络 爬虫框架(基于 pycurl /multicur)。
脚本 –网络 爬虫框架(基于 twisted ),Pyt hon3不受 支持 。
Pyspider——一种 功能强大 的爬虫 系统 。
Cola——分布式 爬行 框架 。
二、其他 。
portia ——基于 Scrapy的视觉 化爬虫 。
re stkit——用于 Pyt hon的HTT P资源 套件 。
这使您能够 轻松 地访问 HTT P资源 ,并在其周围 创建对象 。
demi urge——基于 PyQuery的微爬框架 。
HTML /XM L解析 程序
一、一般性 。
lxml-编写 高效 的HTML /XM L处理 库的C语言 。
支援 XPath。
cssselect——解析 DOM 树和CSS 选择器 。
pyquery——解析 DOM 树和jQuery选择符 。
beautifulSoup–低效率 的HTML /XM L处理 库,一个 纯Pyt hon实现 。
Html5l ib ——根据 WHATWG 规范 为HTML /XM L文档 生成 DOM 。
目前 ,所有 浏览器 都使用 了该规范 。
Feedparser-RSS解析 /ATOMfeeds 。
Mark upSafe –提供 了一个 用于 XM L/HTML /XHTML的安全 转义 字符串 。
xml todict ——一个 Pyt hon模块 ,它使您在处理 XM L时有处理 JSON的感觉 。
xh tml2p df -HTML /CSS 到PDF 的转换 。
简单 实现 ——很容易 实现 将XM L文件转换 成Pyt hon对象 。
二、清理 。
清除 -清除 HTML (需要 html5 lib)。
Sanitize——给混乱 的数据 世界 带来 光明 。
文字处理
用来 分析 和处理 简单 文字 的库。
普通 。
Difflib–(Pyt hon标准库 )可以 帮助 进行 区分 。
线性化 -快速 计算 线性化 距离 和字符串 相似度 。
Fuzzy wuzzy——模糊匹配字符串 。
esmre –re gex加速器 。
自动 对Unicode文本 进行 整理 ,以减少 碎片 的数量 。
天然 语言 处理
用来 处理 人类 语言 的库。
编写 Pyt hon程序 ,以最好 的平台 处理 人类 语言 的数据 。
模式 ——Pyt hon的网络 挖掘 模块 。
拥有 自然语言 处理 、机器学习 等工具 。
文本 块——提供 一致 的AP I来进行 自然语言 处理 任务 。
它是建立 在NLTK和Pattern巨人 肩膀 之上 的。
Jie ba——中文分词 工具 。
Snow NLP——中文 文字处理 类库 。
loso——另一种中文 分类法 。
浏览 自动 和模拟 。
selenium–自动运行 真正 的浏览器 (Chrome,Firefox,Opera,IE )。
ghost .py-封装 PyQt的web kit (需要 PyQT)。
Spynner–封装 PyQt的web kit (PyQT是必需 的)。
spl inter -通用 AP I浏览器 模拟器 (seleniumweb驱动 ,Zope ,Django客户端 )。
多项 处理
线程 在Pyt hon标准库 中运行 ,threading 。
非常适合 I/O密集型 任务 。
由于 pythonGIL,不适合 CP U绑定 任务 。
Multiprocessing ——运行 多进程的标准 Pyt hon库。
异步 任务 队列 /作业 队列 ,它基于 分布式 消息传递 。
配置 -配置 -配置 模块 提供 了调用 异步 执行 的高级 接口 。
非同步
非同步 网络编程 库
asyncio –(高于 Pyt hon3.4 +版本 的Pyt hon标准库 )异步 I/O、时间循环、协作 程序 和任务 。
Twist ed ——基于 事件驱动 的网络 引擎 框架 。
tor nado——网络 框架 和异步 网络 库。
发布 –事件驱动 的Pyt hon并发 框架 。
Die sel ——Pyt hon基于 绿色 事件 的I/O框架 。
geven t——一个 基于 协程 的Pyt hon网络 库,使用 gre enlet 。
ventlet –支持 WSGI的异步 框架 。
Tomorro w——一个 完美 的异步 代码 修饰语 法。
排队 。
异步 任务 队列 /作业 队列 ,它基于 分布式 消息传递 。
Huey——小的多线程 任务 队列 。
使用 red is &Gevent 的Pyt hon分布式 工作任务 队列 ,mrq-Mr .Queue-。
RQ ——一个 基于 Redis的轻量级 任务 队列 管理器 。
simpleq——基于 Amazon SQ S的队列 ,简单 ,可无限 扩展 。
Pyt hon-gearman——Gearman 的Pyt honAP I。
云
Picl oud——Pyt hon代码 在云中 执行 。
dominoup.com ——云执行 R,Pyt hon和matlab代码 。
页面 内容 抽取 。
获取 Web 内容 的库。
网页 的文字 与元数据 。
新页面 ——使用 Pyt hon来获取 新闻 、提取 文章 以及 对内容 进行 规划 。
html2t ext–将HTML 文本 转换 为Mark dow n格式 文本 。
python-goose-HTML 目录 /文章 抽取 器。
lass ie ——人性化 的网页内容 检索工具 。
欢迎大家交流学习。
*请认真填写需求信息,我们会在24小时内与您取得联系。