涉及的技术
- 熟练一门编程语言python
- html知识(HTML 就是一个文档树结构)
- http/https协议基本知识(爬虫基本原理就是通过网络请求从远程服务器下载数据的过程,而这个网络请求背后的技术就是基于 HTTP 协议。)
- 正则表达式
- 数据库
- 常用抓包工具的使用
- 爬虫框架的使用
- 分布式概念
- 消息队列
- 常用数据结构和算法
- 缓存
- 机器学习的应用
作用
- 爬虫只是为了 获取数据,分析、挖掘数据才是价值;
- 数据分析、数据挖掘;
学习阶段
- 1.入门:掌握基础知识
- 2.模仿:跟着别人的爬虫学,弄懂每行代码
- 3.自己动手,独立设计爬虫系统
基础知识
- 流程:从数据的抓取到清洗再到存储
- Requests :一个模拟浏览器发送 HTTP 请求的网络库
- 了解 HTTP 协议之后,你就可以专门有针对性的学习和网络相关的模块了,比如 Python 自带有 urllib、urllib2(Python3中的urllib),httplib,Cookie等内容,当然你可以直接跳过这些,直接学习 Requests 怎么用,前提是你熟悉了 HTTP协议的基本内容。
- 数据爬下来,大部分情况是 HTML 文本,也有少数是基于 XML 格式或者 Json 格式的数据,要想正确处理这些数据,你要熟悉每种数据类型的解决方案,比如JSON数据可以直接使用 Python自带的模块 json,对于 HTML 数据,可以使用 BeautifulSoup、lxml 等库去处理,对于 xml 数据,除了可以使用 untangle、xmltodict等第三方库。
- Python 的 re 模块可用来处理正则表达式
- 数据清洗完最终要进行持久化存储,你可以用文件存储,比如CSV文件,也可以用数据库存储,简单的用 sqlite,专业点用 MySQL,或者是分布式的文档数据库 MongoDB,这些数据库对Python都非常友好,有现成的库支持。
- 很多网站都设有反爬虫策略,他们想方设法阻止你用非正常手段获取数据,比如会有各种奇奇怪怪的验证码限制你的请求操作、对请求速度做限制,对IP做限制、甚至对数据进行加密操作,总之,就是为了提高获取数据的成本。这时你需要掌握的知识就要更多了,你需要深入理解 HTTP 协议,你需要理解常见的加解密算法,你要理解 HTTP 中的 cookie,HTTP 代理,HTTP中的各种HEADER。
爬虫常用库
- urllib、urlib2(Python中的urllib)python内建的网络请求库
- urllib3:线程安全的HTTP网络请求库
- requests:使用最广泛的网络请求库,兼容py2和py3
- grequests:异步的requests
- BeautifulSoup:HTML、XML操作解析库
- lxml:另一种处理 HTML、XML的方式
- tornado:异步网络框架
- Gevent:异步网络框架
- Scrapy:最流行的爬虫框架
- pyspider:爬虫框架
- xmltodict:xml转换成字典
- pyquery:像jQuery一样操作HTML
- Jieba :分词
- SQLAlchemy:ORM框架
- celery :消息队列
- rq:简单消息队列
- python-goose :从HTML中提取文本
书籍
《图解HTTP》
《HTTP权威指南》
《计算机网络:自顶向下方法》
《用Python写网络爬虫》
《Python网络数据采集》
《精通正则表达式》
《Python入门到实践》
《自己动手写网络爬虫》
《Crypto101》
《图解密码技术》