
网络爬虫:就是抓取网页数据的程序。
网页三大特征:
1. 网页都有自己的URL(统一资源定位符)来进行定位,每个网页都有一个唯一的URL
2. 网页都用HTML(超文本标记语言)来描述页面信息。
3. 网页都用HTTP/HTTPS(超文本传输协议)协议来传输HTML数据。
爬虫的设计思路:
1. 首先设定需要爬取的网页的URL地址;
2. 通过HTTP协议来获取对应的HTML页面;
3. 提取HTML页面的信息:
a. 如果有用的数据,那就保存起来;
b. 如果是需要继续爬取的链接,重新指定第二步。
为什么要用Python做爬虫?
PHP、Java、C/C++、Python...
- PHP 虽然是世界上最好的语言,但是它天生不是用来做爬虫的,
而且多线程、异步支持比较差,并发能力较弱。
爬虫属于工具性程序,对速度和效率要求非常高。
- Java 的爬虫生态圈非常完善,Java语言本身比较笨重,代码量比较大。java 查看线程状态
相比而言,修改功能后会导致代码大量变动,开发成本和重构成本比较高。
- C/C++ 运行效率和性能几乎最强(汇编),学习成本太高,导致企业难以招人,
项目代码成型慢。用C/C++写爬虫,是能力的体现,但不是最好的选择。
- Python 语法优美,编写快速灵活,开发效率高,相关的HTTP请求库和HTML解析库非常丰富,
学习成本低。还有强大的爬虫框架Scrapy(twisted异步网络框架)、以及高效成熟的scrapy-redis分布式策略。
但是,因为是解释型语言,性能速度相对较差(但是,可以通过硬件弥补)。
课程介绍:
-1. Python基本语法知识 和 基本Web知识 已经搞定。
-2 HTML页面的抓取:
urllib、urllib2、requests三个HTTP请求处理库:
作用:通过处理,可以模拟浏览器发送HTTP请求,并获取服务器返回的HTML或其他响应页面。
-3 HTML页面的解析:
re、xpath、BeautifulSoup4、Jsonpath:
作用:使用某种描述性语言,指定一个匹配规则,来提取需要的页面数据,符合规则的数据,叫"匹配"。
-4 动态HTML处理/验证码的处理:
Selenium+PhantomJS: 模拟真实浏览器加载数据,js 、ajax等..
Tesseract OCR:光学字符识别系统,识别图像的内容,返回文本内容。
-5 Scrapy框架:
高定制性高性能的Python爬虫框架:
函数 - 类 - 模块/库/包 - 框架:包含了很多不同功能的模块
提供了数据下载、数据提取、数据存储、请求去重等,并且使用了twisted异步网络框架,下载速度非常快。
-6 scraoy-redis 分布式策略:
scrapy本身不支持分布式,scrapy-redis就是一套以redis为核心的组件,让Scrapy具有了支持分布式的功能。所有的请求、请求去重指纹、数据都存储在同一个Redis里,可以统一调度和分配。
-7 爬虫- 反爬虫 - 反反爬虫:
User-Agent、代理IP、验证码、动态数据加载等...
权衡:
数据成本 比较 人力成本 + 机器成本
爬虫和反爬虫之间的斗争,一定是爬虫获胜!
只要是真实用户可以浏览的网页数据,都可以用爬虫爬取下来。
毛主席说过:战略上蔑视、战术上重视。
Python自带的模块位置:
/usr/lib/python2.7/urllib2.py
通过pip install 安装的模块位置
/usr/local/lib/python2.7/site-packages
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-77069-1.html
美国佬是想再来一轮冷战啊