Python爬虫技术入门知识

涉及的技术

  • 熟练一门编程语言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》
《图解密码技术》

Thanks!