zoukankan      html  css  js  c++  java
  • python | 爬虫笔记(一)- 开发环境配置

    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关键字写法更加简洁,架构更清晰。

    > 安装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的安装

    ...
     

    ##本系列内容为《python3爬虫开发实战》学习笔记。本系列博客列表如下:

    (零)学习路线

    (一)开发环境配置

    (二)爬虫基础

    (三)基本库使用

    (四)解析库使用

    (五)数据存储

    (六)Ajax数据爬取

    (七)动态渲染页面爬取Selenium

    持续更新...

    对应代码请见:..

     

  • 相关阅读:
    Oracle 数值函数
    oracle常用函数
    LeetCode Second Highest Salary 第二高薪水
    placeholder在不同浏览器下的表现及兼容方法
    鼠标放在图片上指针变成放大镜形状
    PS如何查找自己想要的字体
    网页常用字体
    JS倒计时代码
    JavaScript 导出Excel 代码
    event.keycode大全(javascript)
  • 原文地址:https://www.cnblogs.com/geo-will/p/9590592.html
Copyright © 2011-2022 走看看