摘要:
Python3网络爬虫开发实战 0.0-前言 0.1-序一 0.3-序二 1-开发环境配置 1.1-Python3的安装 1.2-请求库的安装 1.3-解析库的安装 1.4-数据库的安装 1.5-存储库的安装 1.6-Web库的安装 1.7-App爬取相关库的安装 1.8 爬虫框架的安装 1.9 部 阅读全文
摘要:
第一章 开发环境配置 工欲善其事,必先利其器! 编写和运行程序之前,我们必须先把开发环境配置好。只有配置好了环境并且有了更方便的开发工具,我们才能更加高效地用程序实现相应的功能。然而很多情况下,我们可能在最开始就卡在环境配置上,如果这个过程花费了太多时间,学习的兴趣可能就下降了大半,所以本章专门对本 阅读全文
摘要:
15.3 Scrapyd 对接 Docker 我们使用了 Scrapyd-Client 成功将 Scrapy 项目部署到 Scrapyd 运行,前提是需要提前在服务器上安装好 Scrapyd 并运行 Scrapyd 服务,而这个过程比较麻烦。如果同时将一个 Scrapy 项目部署到 100 台服务器 阅读全文
摘要:
13.4 Spider 的用法 在 Scrapy 中,要抓取网站的链接配置、抓取逻辑、解析逻辑里其实都是在 Spider 中配置的。在前一节实例中,我们发现抓取逻辑也是在 Spider 中完成的。本节我们就来专门了解一下 Spider 的基本用法。 1. Spider 运行流程 在实现 Scrapy 阅读全文
摘要:
9.1 代理的设置 在前面我们介绍了多种请求库,如 Requests、Urllib、Selenium 等。我们接下来首先贴近实战,了解一下代理怎么使用,为后面了解代理池、ADSL 拨号代理的使用打下基础。 下面我们来梳理一下这些库的代理的设置方法。 1. 获取代理 做测试之前,我们需要先获取一个可用 阅读全文
摘要:
13.8 Scrapy 对接 Selenium Scrapy 抓取页面的方式和 requests 库类似,都是直接模拟 HTTP 请求,而 Scrapy 也不能抓取 JavaScript 动态渲染的页面。在前文中抓取 JavaScript 渲染的页面有两种方式。一种是分析 Ajax 请求,找到其对应 阅读全文
摘要:
15.2 Scrapyd-Client 的使用 这里有现成的工具来完成部署过程,它叫作 Scrapyd-Client。本节将简单介绍使用 Scrapyd-Client 部署 Scrapy 项目的方法。 1. 准备工作 请先确保 Scrapyd-Client 已经正确安装,安装方式可以参考第 1 章的 阅读全文
摘要:
15.1 Scrapyd 分布式部署 分布式爬虫完成并可以成功运行了,但是有个环节非常烦琐,那就是代码部署。 我们设想下面的几个场景。 如果采用上传文件的方式部署代码,我们首先将代码压缩,然后采用 SFTP 或 FTP 的方式将文件上传到服务器,之后再连接服务器将文件解压,每个服务器都需要这样配置。 阅读全文
摘要:
前言 为什么写这本书 在这个大数据时代,尤其是人工智能浪潮兴起的时代,不论是工程领域还是研究领域,数据已经成为必不可少的一部分,而数据的获取很大程度上依赖于爬虫的爬取,所以爬虫也逐渐变得火爆起来。 我是在 2015 年开始接触爬虫的,当时爬虫其实并没有这么火,我当时觉得能够把想要的数据抓取下来就是一 阅读全文
摘要:
第十五章 分布式爬虫的部署 在前一章我们成功实现了分布式爬虫,但是在这个过程中我们发现有很多不方便的地方。 在将 Scrapy 项目放到各台主机运行时,你可能采用的是文件上传或者 Git 同步的方式,但这样需要各台主机都进行操作,如果有 100 台、1000 台主机,那工作量可想而知。 本章我们就来 阅读全文
摘要:
15.5 Gerapy 分布式管理 我们可以通过 Scrapyd-Client 将 Scrapy 项目部署到 Scrapyd 上,并且可以通过 Scrapyd API 来控制 Scrapy 的运行。那么,我们是否可以做到更优化?方法是否可以更方便可控? 我们重新分析一下当前可以优化的问题。 使用 S 阅读全文
摘要:
13.11 Scrapyrt 的使用 Scrapyrt 为 Scrapy 提供了一个调度的 HTTP 接口。有了它我们不需要再执行 Scrapy 命令,而是通过请求一个 HTTP 接口即可调度 Scrapy 任务,我们就不需要借助于命令行来启动项目了。如果项目是在远程服务器运行,利用它来启动项目是个 阅读全文
摘要:
13.6 Spider Middleware 的用法 Spider Middleware 是介入到 Scrapy 的 Spider 处理机制的钩子框架。我们首先来看看它的架构,如图 13-1 所示。 当 Downloader 生成 Response 之后,Response 会被发送给 Spider, 阅读全文
摘要:
8.2 极验滑动验证码的识别 上节我们了解了可以直接利用 tesserocr 来识别简单的图形验证码。近几年出现了一些新型验证码,其中比较有代表性的就是极验验证码,它需要拖动拼合滑块才可以完成验证,相对图形验证码来说识别难度上升了几个等级。本节将讲解极验验证码的识别过程。 1. 本节目标 我们的目标 阅读全文
摘要:
5.1 文件存储 文件存储形式多种多样,比如可以保存成 TXT 纯文本形式,也可以保存为 JSON 格式、CSV 格式等,本节就来了解一下文本文件的存储方式。 5.1.1 TXT 文本存储 将数据保存到 TXT 文本的操作非常简单,而且 TXT 文本几乎兼容任何平台,但是这有个缺点,那就是不利于检索 阅读全文
摘要:
4.2 使用 Beautiful Soup 前面介绍了正则表达式的相关用法,但是一旦正则表达式写的有问题,得到的可能就不是我们想要的结果了。而且对于一个网页来说,都有一定的特殊结构和层级关系,而且很多节点都有 id 或 class 来作区分,所以借助它们的结构和属性来提取不也可以吗? 这一节中,我们 阅读全文
摘要:
3.4 抓取猫眼电影排行 本节中,我们利用 requests 库和正则表达式来抓取猫眼电影 TOP100 的相关内容。requests 比 urllib 使用更加方便,而且目前我们还没有系统学习 HTML 解析库,所以这里就选用正则表达式来作为解析工具。 1. 本节目标 本节中,我们要提取出猫眼电影 阅读全文
摘要:
2.5 代理的基本原理 我们在做爬虫的过程中经常会遇到这样的情况,最初爬虫正常运行,正常抓取数据,一切看起来都是那么美好,然而一杯茶的功夫可能就会出现错误,比如 403 Forbidden,这时候打开网页一看,可能会看到 “您的 IP 访问频率太高” 这样的提示。出现这种现象的原因是网站采取了一些反 阅读全文
摘要:
第二章 爬虫基础 在写爬虫之前,我们还需要了解一些基础知识,如 HTTP 原理、网页的基础知识、爬虫的基本原理、Cookies 的基本原理等。本章中,我们就对这些基础知识做一个简单的总结。 阅读全文
摘要:
1.8 爬虫框架的安装 我们直接用 requests、Selenium 等库写爬虫,如果爬取量不是太大,速度要求不高,是完全可以满足需求的。但是写多了会发现其内部许多代码和组件是可以复用的,如果我们把这些组件抽离出来,将各个功能模块化,就慢慢会形成一个框架雏形,久而久之,爬虫框架就诞生了。 利用框架 阅读全文