1.1 简介
· 爬虫是请求网站并提取数据的自动化程序
· 爬虫能够简单分为几步:抓取页面、分析页面、存储数据。
1.2 请求库的安装
· 在第一步抓取页面的过程当中,咱们就须要模拟浏览器向服务器发出请求,涉及到的第三方库有 Requests、Selenium、Aiotttp 等。
· Selenium自动化测试工具,利用它咱们能够驱动浏览器执行特定的动做,如点击、下拉等等操做,对于一些 JavaScript 渲染的页面来讲,此种抓取方式很是有效。
> 安装Requests、Selenium
> 安装ChromeDriver
#安装后测试
from selenium import webdriver
browser = webdriver.Chrome()
· Requests 库是一个阻塞式 HTTP 请求库,发出请求后须要等待服务器响应,耗时。若是能够在等待过程当中作一些其余事情,好比进行请求调度、相应处理等,能够提升效率。Aiohttp 就是这样一个提供异步 Web 服务的库,借助于 async/await关键字写法更加简洁,架构更清晰。html
> 安装aiohttp
pip3 install aiohttp==3.0.0
1.3 解析库的安装
抓取代码后,下一步是从网页中提取信息。易用的解析库有 LXML、BeautifulSoup、PyQuery 等等,提供了很是强大的解析方法,如 XPath 解析、CSS 选择器解析等等。
> 安装上述三个包
> 安装tesseract库识别OCR
1.4 数据库的安装
关系型数据库如 SQLite、MySQL、Oracle、SQL Server、DB2 等,其数据库是以表的形式存储。
非关系型数据库如MongoDB、Redis,它们的存储形式是键值对,存储形式更加灵活。
1.4.1 MySQL
一个轻量级的关系型数据库,以表的形式来存储数据
brew install mysql
brew services start mysql
brew services stop mysql
1.4.2 MongoDB
由 C++ 语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式相似 Json 对象,它的字段值能够包含其余文档,数组及文档数组,很是灵活。
brew install mongodb
brew services start mongodb
sudo mongod
brew services stop mongodb
>下载可视化工具robo3t
1.4.3 Redis安装
Redis 是一个基于内存的高效的非关系型数据库
brew install redis
brew services start redis #启动服务
redis-server /usr/local/etc/redis.conf
Mac 下 Redis 的配置文件路径是 /usr/local/etc/redis.conf,能够经过修改它来配置访问密码。
1.5 存储库的安装
安装python对应的库
pip3 install pymysql, pymongo, redispy
RedisDump 是一个用于 Redis 数据导入导出的工具,是基于 Ruby 实现的,因此要安装 RedisDump 须要先安装Ruby。
1.6 Web库的安装
python中web服务程序:Flask、Django 等,来开发网站,开发接口
须要web服务程序来搭建一些API接口,供爬虫使用。
Flask 是一个轻量级的 Web 服务程序,简单、易用、灵活,在本书中咱们主要用它来作一些 API 服务,
Tornado 是一个支持异步的Web框架,经过使用非阻塞 I/O 流,它能够支撑成千上万的开放链接。后续将用tornado+redis搭建一个ADSL拨号代理池。
1.7 APP爬取相关库的安装(须要的时候再装)
除了网页,爬虫也能够对app数据进行爬取。通常是经过请求服务器的接口来获取的,主要要利用抓包技术。包括:Charles、MitmProxy、MitmDump,APP
Charles 来做为主要的移动端抓包工具,用于分析移动 APP 的数据包,辅助完成 APP 数据抓取工做。
MitmProxy 是一个支持 HTTP 和 HTTPS 的抓包程序,相似 Fiddler、Charles 的功能,只不过它是一个控制台的形式操做。
同时 MitmProxy 还有两个关联组件,一个是 MitmDump,它是 MitmProxy 的命令行接口,利用它咱们能够对接 Python 脚本,用 Python 实现监听后的处理。另外一个是 MitmWeb,它是一个 Web 程序,经过它咱们能够清楚地观察到 MitmProxy 捕获的请求。
Appium 是移动端的自动化测试工具,相似于前面所说的 Selenium,利用它咱们能够驱动 Android、iOS 等设备完成自动化测试,好比模拟点击、滑动、输入等操做,
1.8 爬虫框架的安装
利用框架,不需再关心某些功能的具体实现,只需关心爬取逻辑。能够大大简化代码量,并且架构也会变得清晰,爬取效率也会高许多。
1.8.1 PySpider
PySpider 是国人 binux 编写的强大的网络爬虫框架,它带有强大的 WebUI、脚本编辑器、任务监控器、项目管理器以及结果处理器,同时它支持多种数据库后端、多种消息队列,另外它还支持 JavaScript 渲染页面的爬取,
pip3 install
后直接在浏览器打开:http://localhost:5000/
1.8.2 Scrapy安装
1.8.3 ScrapySplash安装
ScrapySplash 是一个 Scrapy 中支持 JavaScript 渲染的工具
ScrapySplash 的安装分为两部分,一个是是 Splash 服务的安装,安装方式是经过 Docker,安装以后会启动一个 Splash 服务,咱们能够经过它的接口来实现 JavaScript 页面的加载。另一个是 ScrapySplash 的 Python 库的安装,安装以后便可在 Scrapy 中使用 Splash 服务。
安装时需运行docker,完成后
http://localhost:8050 便可看到splash主页
1.8.4 ScrapyRedis的安装
1.9 部署库的安装
大规模抓取数据,分布式爬虫。一份代码部署到多台主机上协同运行
对于 Scrapy 来讲,它有一个扩展组件叫作 Scrapyd,咱们只须要安装 Scrapyd 便可远程管理 Scrapy 任务,包括部署源码、启动任务、监放任务等操做。另外还有 ScrapydClient 和 ScrapydAPI 来帮助咱们更方便地完成部署和监听操做。
另外还有一种部署方式就是 Docker 集群部署,咱们只须要将爬虫制做为 Docker 镜像,只要主机安装了 Docker,就能够直接运行爬虫,而无需再去担忧环境配置、版本问题。
1.9.1 Docker安装
Docker 是一种容器技术,它能够将应用和环境等进行打包,造成一个独立的,相似于 iOS 的 APP 形式的「应用」,这个应用能够直接被分发到任意一个支持 Docker 的环境中,经过简单的命令便可启动运行。Docker 是一种最流行的容器化实现方案。和虚拟化技术相似,它极大的方便了应用服务的部署;又与虚拟化技术不一样,它以一种更轻量的方式实现了应用服务的打包。使用 Docker 可让每一个应用彼此相互隔离,在同一台机器上同时运行多个应用,不过他们彼此之间共享同一个操做系统。Docker 的优点在于,它能够在更细的粒度上进行资源的管理,也比虚拟化技术更加节约资源。
docker镜像加速器:阿里云或DaoCloud
1.9.2 Scrapyd的安装
Scrapyd 是一个用于部署和运行 Scrapy 项目的工具。有了它,你能够将写好的 Scrapy 项目上传到云主机并经过 API 来控制它的运行。但主要针对Linux主机
1.9.3 ScrapydClient的安装
...