1 2 3 4

03 2021 档案

摘要:序二 众所周知,人工智能的这次浪潮和深度学习技术的突破密不可分,却很少有人会谈论另一位幕后英雄,即数据。如果不是网络上有如此多的图片,李飞飞教授也无法构建近千万的标注图片集合 ImageNet,从而成就深度学习技术在图像识别领域的突破。如果不是在网络上有了如此多的聊天数据,小冰也不会学习到人类的情商 阅读全文
posted @ 2021-03-30 22:28 学霸君主 阅读(187) 评论(0) 推荐(0)
摘要:1.3 解析库的安装 抓取网页代码之后,下一步就是从网页中提取信息。提取信息的方式有多种多样,可以使用正则来提取,但是写起来相对比较烦琐。这里还有许多强大的解析库,如 lxml、Beautiful Soup、pyquery 等。此外,还提供了非常强大的解析方法,如 XPath 解析和 CSS 选择器 阅读全文
posted @ 2021-03-30 22:25 学霸君主 阅读(367) 评论(0) 推荐(0)
摘要:1.2 请求库的安装 爬虫可以简单分为几步:抓取页面、分析页面和存储数据。 在抓取页面的过程中,我们需要模拟浏览器向服务器发出请求,所以需要用到一些 Python 库来实现 HTTP 请求操作。在本书中,我们用到的第三方库有 requests、Selenium 和 aiohttp 等。 在本节中,我 阅读全文
posted @ 2021-03-30 22:22 学霸君主 阅读(511) 评论(0) 推荐(0)
摘要:1.5 存储库的安装 1.4 节中,我们介绍了几个数据库的安装方式,但这仅仅是用来存储数据的数据库,它们提供了存储服务,但如果想要和 Python 交互的话,还需要安装一些 Python 存储库,如 MySQL 需要安装 PyMySQL,MongoDB 需要安装 PyMongo 等。本节中,我们来说 阅读全文
posted @ 2021-03-30 22:18 学霸君主 阅读(139) 评论(0) 推荐(0)
摘要:1.6 Web 库的安装 对于 Web,我们应该都不陌生,现在日常访问的网站都是 Web 服务程序搭建而成的。Python 同样不例外,也有一些这样的 Web 服务程序,比如 Flask、Django 等,我们可以拿它来开发网站和接口等。 在本书中,我们主要使用这些 Web 服务程序来搭建一些 AP 阅读全文
posted @ 2021-03-30 22:15 学霸君主 阅读(166) 评论(0) 推荐(0)
摘要:1.7 App 爬取相关库的安装 除了 Web 网页,爬虫也可以抓取 App 的数据。App 中的页面要加载出来,首先需要获取数据,而这些数据一般是通过请求服务器的接口来获取的。由于 App 没有浏览器这种可以比较直观地看到后台请求的工具,所以主要用一些抓包技术来抓取数据。 本书介绍的抓包工具有 C 阅读全文
posted @ 2021-03-30 22:12 学霸君主 阅读(257) 评论(0) 推荐(0)
摘要:2.1 HTTP 基本原理 在本节中,我们会详细了解 HTTP 的基本原理,了解在浏览器中敲入 URL 到获取网页内容之间发生了什么。了解了这些内容,有助于我们进一步了解爬虫的基本原理。 2.1.1 URI 和 URL 这里我们先了解一下 URI 和 URL,URI 的全称为 Uniform Res 阅读全文
posted @ 2021-03-30 22:09 学霸君主 阅读(307) 评论(1) 推荐(0)
摘要:1.9 部署相关库的安装 如果想要大规模抓取数据,那么一定会用到分布式爬虫。对于分布式爬虫来说,我们需要多台主机,每台主机有多个爬虫任务,但是源代码其实只有一份。此时我们需要做的就是将一份代码同时部署到多台主机上来协同运行,那么怎么去部署就是另一个值得思考的问题。 对于 Scrapy 来说,它有一个 阅读全文
posted @ 2021-03-30 22:06 学霸君主 阅读(145) 评论(0) 推荐(0)
摘要:2.4 会话和 Cookies 在浏览网站的过程中,我们经常会遇到需要登录的情况,有些页面只有登录之后才可以访问,而且登录之后可以连续访问很多次网站,但是有时候过一段时间就需要重新登录。还有一些网站,在打开浏览器时就自动登录了,而且很长时间都不会失效,这种情况又是为什么?其实这里面涉及会话(Sess 阅读全文
posted @ 2021-03-30 22:03 学霸君主 阅读(126) 评论(0) 推荐(0)
摘要:2.3 爬虫的基本原理 我们可以把互联网比作一张大网,而爬虫(即网络爬虫)便是在网上爬行的蜘蛛。把网的节点比作一个个网页,爬虫爬到这就相当于访问了该页面,获取了其信息。可以把节点间的连线比作网页与网页之间的链接关系,这样蜘蛛通过一个节点后,可以顺着节点连线继续爬行到达下一个节点,即通过一个网页继续获 阅读全文
posted @ 2021-03-30 22:00 学霸君主 阅读(160) 评论(0) 推荐(0)
摘要:2.2 网页基础 用浏览器访问网站时,页面各不相同,你有没有想过它为何会呈现这个样子呢?本节中,我们就来了解一下网页的基本组成、结构和节点等内容。 2.2.1 网页的组成 网页可以分为三大部分 —— HTML、CSS 和 JavaScript。如果把网页比作一个人的话,HTML 相当于骨架,Java 阅读全文
posted @ 2021-03-30 21:57 学霸君主 阅读(152) 评论(0) 推荐(0)
摘要:3.1 使用 urllib 在 Python 2 中,有 urllib 和 urllib2 两个库来实现请求的发送。而在 Python 3 中,已经不存在 urllib2 这个库了,统一为 urllib,其官方文档链接为:https://docs.python.org/3/library/urlli 阅读全文
posted @ 2021-03-30 21:53 学霸君主 阅读(210) 评论(0) 推荐(0)
摘要:第三章 基本库的使用 学习爬虫,最初的操作便是模拟浏览器向服务器发出请求,那么我们需要从哪个地方做起呢?请求需要我们自己来构造吗?需要关心请求这个数据结构的实现吗?需要了解 HTTP、TCP、IP 层的网络传输通信吗?需要知道服务器的响应和应答原理吗? 可能你不知道无从下手,不过不用担心,Pytho 阅读全文
posted @ 2021-03-30 21:50 学霸君主 阅读(35) 评论(0) 推荐(0)
摘要:3.3 正则表达式 本节中,我们看一下正则表达式的相关用法。正则表达式是处理字符串的强大工具,它有自己特定的语法结构,有了它,实现字符串的检索、替换、匹配验证都不在话下。 当然,对于爬虫来说,有了它,从 HTML 里提取想要的信息就非常方便了。 1. 实例引入 说了这么多,可能我们对它到底是个什么还 阅读全文
posted @ 2021-03-30 21:47 学霸君主 阅读(164) 评论(0) 推荐(0)
摘要:3.2 使用 requests 上一节中,我们了解了 urllib 的基本用法,但是其中确实有不方便的地方,比如处理网页验证和 Cookies 时,需要写 Opener 和 Handler 来处理。为了更加方便地实现这些操作,就有了更为强大的库 requests,有了它,Cookies、登录验证、代 阅读全文
posted @ 2021-03-30 21:44 学霸君主 阅读(210) 评论(0) 推荐(0)
摘要:4.3 使用 pyquery 在上一节中,我们介绍了 Beautiful Soup 的用法,它是一个非常强大的网页解析库,你是否觉得它的一些方法用起来有点不适应?有没有觉得它的 CSS 选择器的功能没有那么强大? 如果你对 Web 有所涉及,如果你比较喜欢用 CSS 选择器,如果你对 jQuery 阅读全文
posted @ 2021-03-30 21:41 学霸君主 阅读(119) 评论(0) 推荐(0)
摘要:4.1 使用 XPath XPath,全称 XML Path Language,即 XML 路径语言,它是一门在 XML 文档中查找信息的语言。它最初是用来搜寻 XML 文档的,但是它同样适用于 HTML 文档的搜索。 所以在做爬虫时,我们完全可以使用 XPath 来做相应的信息抽取。本节中,我们就 阅读全文
posted @ 2021-03-30 21:38 学霸君主 阅读(143) 评论(0) 推荐(0)
摘要:第四章 解析库的使用 上一章中,我们实现了一个最基本的爬虫,但提取页面信息时使用的是正则表达式,这还是比较烦琐,而且万一有地方写错了,可能导致匹配失败,所以使用正则表达式提取页面信息多多少少还是有些不方便。 对于网页的节点来说,它可以定义 id、class 或其他属性。而且节点之间还有层次关系,在网 阅读全文
posted @ 2021-03-30 21:35 学霸君主 阅读(34) 评论(0) 推荐(0)
摘要:第五章 数据存储 用解析器解析出数据之后,接下来就是存储数据了。保存的形式可以多种多样,最简单的形式是直接保存为文本文件,如 TXT、JSON、CSV 等。另外,还可以保存到数据库中,如关系型数据库 MySQL,非关系型数据库 MongoDB、Redis 等。 阅读全文
posted @ 2021-03-30 21:31 学霸君主 阅读(17) 评论(0) 推荐(0)
摘要:6.1 什么是 Ajax Ajax,全称为 Asynchronous JavaScript and XML,即异步的 JavaScript 和 XML。它不是一门编程语言,而是利用 JavaScript 在保证页面不被刷新、页面链接不改变的情况下与服务器交换数据并更新部分网页的技术。 对于传统的网页 阅读全文
posted @ 2021-03-30 21:28 学霸君主 阅读(103) 评论(0) 推荐(0)
摘要:第六章 Ajax 数据爬取 有时候我们在用 requests 抓取页面的时候,得到的结果可能和在浏览器中看到的不一样:在浏览器中可以看到正常显示的页面数据,但是使用 requests 得到的结果并没有。这是因为 requests 获取的都是原始的 HTML 文档,而浏览器中的页面则是经过 JavaS 阅读全文
posted @ 2021-03-30 21:25 学霸君主 阅读(39) 评论(0) 推荐(0)
摘要:5.3 非关系型数据库存储 NoSQL,全称 Not Only SQL,意为不仅仅是 SQL,泛指非关系型数据库。NoSQL 是基于键值对的,而且不需要经过 SQL 层的解析,数据之间没有耦合性,性能非常高。 非关系型数据库又可细分如下。 键值存储数据库:代表有 Redis、Voldemort 和 阅读全文
posted @ 2021-03-30 21:22 学霸君主 阅读(323) 评论(0) 推荐(0)
摘要:5.2 关系型数据库存储 关系型数据库是基于关系模型的数据库,而关系模型是通过二维表来保存的,所以它的存储方式就是行列组成的表,每一列是一个字段,每一行是一条记录。表可以看作某个实体的集合,而实体之间存在联系,这就需要表与表之间的关联关系来体现,如主键外键的关联关系。多个表组成一个数据库,也就是关系 阅读全文
posted @ 2021-03-30 21:19 学霸君主 阅读(499) 评论(0) 推荐(0)
摘要:6.4 分析 Ajax 爬取今日头条街拍美图 本节中,我们以今日头条为例来尝试通过分析 Ajax 请求来抓取网页数据的方法。这次要抓取的目标是今日头条的街拍美图,抓取完成之后,将每组图片分文件夹下载到本地并保存下来。 1. 准备工作 在本节开始之前,请确保已经安装好 requests 库。如果没有安 阅读全文
posted @ 2021-03-30 21:16 学霸君主 阅读(141) 评论(0) 推荐(0)
摘要:6.3 Ajax 结果提取 这里仍然以微博为例,接下来用 Python 来模拟这些 Ajax 请求,把我发过的微博爬取下来。 1. 分析请求 打开 Ajax 的 XHR 过滤器,然后一直滑动页面以加载新的微博内容。可以看到,会不断有 Ajax 请求发出。 选定其中一个请求,分析它的参数信息。点击该请 阅读全文
posted @ 2021-03-30 20:41 学霸君主 阅读(133) 评论(0) 推荐(0)
摘要:6.2 Ajax 分析方法 这里还以前面的微博为例,我们知道拖动刷新的内容由 Ajax 加载,而且页面的 URL 没有变化,那么应该到哪里去查看这些 Ajax 请求呢? 1. 查看请求 这里还需要借助浏览器的开发者工具,下面以 Chrome 浏览器为例来介绍。 首先,用 Chrome 浏览器打开微博 阅读全文
posted @ 2021-03-30 20:38 学霸君主 阅读(76) 评论(0) 推荐(0)
摘要:7.2 Splash 的使用 Splash 是一个 JavaScript 渲染服务,是一个带有 HTTP API 的轻量级浏览器,同时它对接了 Python 中的 Twisted 和 QT 库。利用它,我们同样可以实现动态渲染页面的抓取。 1. 功能介绍 利用 Splash 我们可以实现如下功能: 阅读全文
posted @ 2021-03-30 20:35 学霸君主 阅读(327) 评论(0) 推荐(0)
摘要:7.1 Selenium 的使用 Selenium 是一个自动化测试工具,利用它可以驱动浏览器执行特定的动作,如点击、下拉等操作,同时还可以获取浏览器当前呈现的页面的源代码,做到可见即可爬。对于一些 JavaScript 动态渲染的页面来说,此种抓取方式非常有效。本节中,就让我们来感受一下它的强大之 阅读全文
posted @ 2021-03-30 20:31 学霸君主 阅读(196) 评论(0) 推荐(0)
摘要:第七章 动态渲染页面抓取 在前一章中,我们了解了 Ajax 的分析和抓取方式,这其实也是 JavaScript 动态渲染的页面的一种情形,通过直接分析 Ajax,我们仍然可以借助 requests 或 urllib 来实现数据爬取。 不过 JavaScript 动态渲染的页面不止 Ajax 这一种。 阅读全文
posted @ 2021-03-30 20:28 学霸君主 阅读(99) 评论(0) 推荐(0)
摘要:8.1 图形验证码的识别 我们首先识别最简单的一种验证码,即图形验证码。这种验证码最早出现,现在也很常见,一般由 4 位字母或者数字组成。例如,中国知网的注册页面有类似的验证码,链接为:http://my.cnki.net/elibregister/commonRegister.aspx,页面如图 阅读全文
posted @ 2021-03-30 20:25 学霸君主 阅读(492) 评论(0) 推荐(0)
摘要:第八章 验证码的识别 目前,许多网站采取各种各样的措施来反爬虫,其中一个措施便是使用验证码。随着技术的发展,验证码的花样越来越多。验证码最初是几个数字组合的简单的图形验证码,后来加入了英文字母和混淆曲线。有的网站还可能看到中文字符的验证码,这使得识别愈发困难。 后来 12306 验证码的出现使得行为 阅读全文
posted @ 2021-03-30 20:22 学霸君主 阅读(95) 评论(0) 推荐(0)
摘要:7.4 使用 Selenium 爬取淘宝商品 在前一章中,我们已经成功尝试分析 Ajax 来抓取相关数据,但是并不是所有页面都可以通过分析 Ajax 来完成抓取。比如,淘宝,它的整个页面数据确实也是通过 Ajax 获取的,但是这些 Ajax 接口参数比较复杂,可能会包含加密密钥等,所以如果想自己构造 阅读全文
posted @ 2021-03-30 20:19 学霸君主 阅读(317) 评论(0) 推荐(0)
摘要:7.3 Splash 负载均衡配置 用 Splash 做页面抓取时,如果爬取的量非常大,任务非常多,用一个 Splash 服务来处理的话,未免压力太大了,此时可以考虑搭建一个负载均衡器来把压力分散到各个服务器上。这相当于多台机器多个服务共同参与任务的处理,可以减小单个 Splash 服务的压力。 1 阅读全文
posted @ 2021-03-30 20:16 学霸君主 阅读(60) 评论(0) 推荐(0)
摘要:8.3 点触验证码的识别 除了极验验证码,还有另一种常见且应用广泛的验证码,即点触验证码。 可能你对这个名字比较陌生,但是肯定见过类似的验证码,比如 12306 就是典型的点触验证码,如图 8-18 所示。 图 8-18 12306 验证码 直接点击图中符合要求的图。所有答案均正确,验证才会成功。如 阅读全文
posted @ 2021-03-30 20:12 学霸君主 阅读(553) 评论(0) 推荐(0)
摘要:9.2 代理池的维护 我们在上一节了解了利用代理可以解决目标网站封 IP 的问题。在网上有大量公开的免费代理,或者我们也可以购买付费的代理 IP,但是代理不论是免费的还是付费的,都不能保证都是可用的,因为可能此 IP 被其他人使用来爬取同样的目标站点而被封禁,或者代理服务器突然发生故障或网络繁忙。一 阅读全文
posted @ 2021-03-30 20:09 学霸君主 阅读(169) 评论(0) 推荐(0)
摘要:第九章 代理的使用 我们在做爬虫的过程中经常会遇到这样的情况,最初爬虫正常运行,正常抓取数据,一切看起来都是那么的美好,然而一杯茶的功夫可能就会出现错误,比如 403 Forbidden,这时候打开网页一看,可能会看到 “您的 IP 访问频率太高” 这样的提示,或者跳出一个验证码让我们输入,输入之后 阅读全文
posted @ 2021-03-30 20:06 学霸君主 阅读(40) 评论(0) 推荐(0)
摘要:8.4 微博宫格验证码的识别 本节我们将介绍新浪微博宫格验证码的识别。微博宫格验证码是一种新型交互式验证码,每个宫格之间会有一条指示连线,指示了应该的滑动轨迹。我们要按照滑动轨迹依次从起始宫格滑动到终止宫格,才可以完成验证,如图 8-24 所示。 图 8-24 验证码示例 鼠标滑动后的轨迹会以黄色的 阅读全文
posted @ 2021-03-30 20:03 学霸君主 阅读(298) 评论(0) 推荐(0)
摘要:第十章 模拟登录 很多情况下,页面的某些信息需要登录才可以查看。对于爬虫来说,需要爬取的信息如果需要登录才可以看到的话,那么我们就需要做一些模拟登录的事情。 在前面我们了解了会话和 Cookies 的用法。简单来说,打开网页然后模拟登录,这实际上是在客户端生成了 Cookies,而 Cookies 阅读全文
posted @ 2021-03-30 20:00 学霸君主 阅读(64) 评论(0) 推荐(0)
摘要:9.5 使用代理爬取微信公众号文章 前面讲解了代理池的维护和付费代理的相关使用方法,接下来我们进行一下实战演练,利用代理来爬取微信公众号的文章。 1. 本节目标 我们的主要目标是利用代理爬取微信公众号的文章,提取正文、发表日期、公众号等内容,爬取来源是搜狗微信,其链接为 http://weixin. 阅读全文
posted @ 2021-03-30 19:57 学霸君主 阅读(231) 评论(0) 推荐(0)
摘要:9.4 ADSL 拨号代理 我们尝试维护过一个代理池。代理池可以挑选出许多可用代理,但是常常其稳定性不高、响应速度慢,而且这些代理通常是公共代理,可能不止一人同时使用,其 IP 被封的概率很大。另外,这些代理可能有效时间比较短,虽然代理池一直在筛选,但如果没有及时更新状态,也有可能获取到不可用的代理 阅读全文
posted @ 2021-03-30 19:53 学霸君主 阅读(122) 评论(0) 推荐(0)
摘要:9.3 付费代理的使用 相对免费代理来说,付费代理的稳定性更高。本节将介绍爬虫付费代理的相关使用过程。 1. 付费代理分类 付费代理分为两类: 一类提供接口获取海量代理,按天或者按量收费,如讯代理。 一类搭建了代理隧道,直接设置固定域名代理,如阿布云代理。 本节分别以两家代表性的代理网站为例,讲解这 阅读全文
posted @ 2021-03-30 19:51 学霸君主 阅读(165) 评论(0) 推荐(0)
摘要:11.1 Charles 的使用 Charles 是一个网络抓包工具,我们可以用它来做 App 的抓包分析,得到 App 运行过程中发生的所有网络请求和响应内容,这就和 Web 端浏览器的开发者工具 Network 部分看到的结果一致。 相比 Fiddler 来说,Charles 的功能更强大,而且 阅读全文
posted @ 2021-03-29 23:31 学霸君主 阅读(129) 评论(0) 推荐(0)
摘要:第十一章 APP 的爬取 前文介绍的都是爬取 Web 网页的内容。随着移动互联网的发展,越来越多的企业并没有提供 Web 网页端的服务,而是直接开发了 App,更多更全的信息都是通过 App 来展示的。那么针对 App 我们可以爬取吗?当然可以。 App 的爬取相比 Web 端爬取更加容易,反爬虫能 阅读全文
posted @ 2021-03-29 23:26 学霸君主 阅读(123) 评论(0) 推荐(0)
摘要:10.2 Cookies 池的搭建 很多时候,在爬取没有登录的情况下,我们也可以访问一部分页面或请求一些接口,因为毕竟网站本身需要做 SEO,不会对所有页面都设置登录限制。 但是,不登录直接爬取会有一些弊端,弊端主要有以下两点。 设置了登录限制的页面无法爬取。如某论坛设置了登录才可查看资源,某博客设 阅读全文
posted @ 2021-03-29 23:15 学霸君主 阅读(304) 评论(0) 推荐(0)
摘要:10.1 模拟登录并爬取 GitHub 我们先以一个最简单的实例来了解模拟登录后页面的抓取过程,其原理在于模拟登录后 Cookies 的维护。 1. 本节目标 本节将讲解以 GitHub 为例来实现模拟登录的过程,同时爬取登录后才可以访问的页面信息,如好友动态、个人信息等内容。 我们应该都听说过 G 阅读全文
posted @ 2021-03-29 23:14 学霸君主 阅读(225) 评论(0) 推荐(0)
摘要:11.5 Appium 爬取微信朋友圈 接下来,我们将实现微信朋友圈的爬取。 如果直接用 Charles 或 mitmproxy 来监听微信朋友圈的接口数据,这是无法实现爬取的,因为数据都是被加密的。而 Appium 不同,Appium 作为一个自动化测试工具可以直接模拟 App 的操作并可以获取当 阅读全文
posted @ 2021-03-29 23:13 学霸君主 阅读(184) 评论(0) 推荐(0)
摘要:11.4 Appium 的基本使用 Appium 是一个跨平台移动端自动化测试工具,可以非常便捷地为 iOS 和 Android 平台创建自动化测试用例。它可以模拟 App 内部的各种操作,如点击、滑动、文本输入等,只要我们手工操作的动作 Appium 都可以完成。在前面我们了解过 Selenium 阅读全文
posted @ 2021-03-29 23:11 学霸君主 阅读(402) 评论(0) 推荐(0)
摘要:11.3 mitmdump 爬取 “得到” App 电子书信息 “得到” App 是罗辑思维出品的一款碎片时间学习的 App,其官方网站为 https://www.igetget.com,App 内有很多学习资源。不过 “得到” App 没有对应的网页版,所以信息必须要通过 App 才可以获取。这次 阅读全文
posted @ 2021-03-29 23:10 学霸君主 阅读(291) 评论(0) 推荐(0)
摘要:11.2 mitmproxy 的使用 mitmproxy 是一个支持 HTTP 和 HTTPS 的抓包程序,有类似 Fiddler、Charles 的功能,只不过它是一个控制台的形式操作。 mitmproxy 还有两个关联组件。一个是 mitmdump,它是 mitmproxy 的命令行接口,利用它 阅读全文
posted @ 2021-03-29 23:09 学霸君主 阅读(295) 评论(0) 推荐(0)
摘要:12.3 pyspider 用法详解 前面我们了解了 pyspider 的基本用法,我们通过非常少的代码和便捷的可视化操作就完成了一个爬虫的编写,本节我们来总结一下它的详细用法。 1. 命令行 上面的实例通过如下命令启动 pyspider: pyspider all 命令行还有很多可配制参数,完整的 阅读全文
posted @ 2021-03-29 23:07 学霸君主 阅读(344) 评论(0) 推荐(1)
摘要:12.2 pyspider 的基本使用 本节用一个实例来讲解 pyspider 的基本用法。 1. 本节目标 我们要爬取的目标是去哪儿网的旅游攻略,链接为 http://travel.qunar.com/travelbook/list.htm,我们要将所有攻略的作者、标题、出发日期、人均费用、攻略正 阅读全文
posted @ 2021-03-29 23:06 学霸君主 阅读(88) 评论(0) 推荐(0)
摘要:12.1 pyspider 框架介绍 pyspider 是由国人 binux 编写的强大的网络爬虫系统,其 GitHub 地址为 https://github.com/binux/pyspider,官方文档地址为 http://docs.pyspider.org/。 pyspider 带有强大的 W 阅读全文
posted @ 2021-03-29 23:04 学霸君主 阅读(158) 评论(0) 推荐(0)
摘要:第十二章 pyspider 框架的使用 前文基本上把爬虫的流程实现一遍,将不同的功能定义成不同的方法,甚至抽象出模块的概念。如微信公众号爬虫,我们已经有了爬虫框架的雏形,如调度器、队列、请求对象等,但是它的架构和模块还是太简单,远远达不到一个框架的要求。如果我们将各个组件独立出来,定义成不同的模块, 阅读全文
posted @ 2021-03-29 23:02 学霸君主 阅读(39) 评论(0) 推荐(0)
摘要:11.6 Appium+mitmdump 爬取京东商品 在前文中,我们曾经用 Charles 分析过京东商品的评论数据,但是可以发现其参数相当复杂,Form 表单有很多加密参数。如果我们只用 Charles 探测到这个接口链接和参数,还是无法直接构造请求的参数,构造的过程涉及一些加密算法,也就无法直 阅读全文
posted @ 2021-03-29 22:41 学霸君主 阅读(244) 评论(0) 推荐(0)
摘要:13.3 Selector 的用法 我们之前介绍了利用 Beautiful Soup、pyquery 以及正则表达式来提取网页数据,这确实非常方便。而 Scrapy 还提供了自己的数据提取方法,即 Selector(选择器)。Selector 是基于 lxml 来构建的,支持 XPath 选择器、C 阅读全文
posted @ 2021-03-29 22:40 学霸君主 阅读(115) 评论(0) 推荐(0)
摘要:13.2 Scrapy 入门 接下来介绍一个简单的项目,完成一遍 Scrapy 抓取流程。通过这个过程,我们可以对 Scrapy 的基本用法和原理有大体了解。 1. 本节目标 本节要完成的任务如下。 创建一个 Scrapy 项目。 创建一个 Spider 来抓取站点和处理数据。 通过命令行将抓取的内 阅读全文
posted @ 2021-03-29 22:39 学霸君主 阅读(127) 评论(0) 推荐(0)
摘要:13.1 Scrapy 框架介绍 Scrapy 是一个基于 Twisted 的异步处理框架,是纯 Python 实现的爬虫框架,其架构清晰,模块之间的耦合程度低,可扩展性极强,可以灵活完成各种需求。我们只需要定制开发几个模块就可以轻松实现一个爬虫。 1. 架构介绍 首先我们来看下 Scrapy 框架 阅读全文
posted @ 2021-03-29 22:20 学霸君主 阅读(146) 评论(0) 推荐(0)
摘要:第十三章 Scrapy 框架的使用 在上一章我们了解了 pyspider 框架的用法,我们可以利用它快速完成爬虫的编写。不过 pyspider 框架也有一些缺点,比如可配置化程度不高,异常处理能力有限等,它对于一些反爬程度非常强的网站的爬取显得力不从心。所以本章我们再介绍一个爬虫框架 Scrapy。 阅读全文
posted @ 2021-03-29 22:18 学霸君主 阅读(43) 评论(0) 推荐(0)
摘要:13.7 Item Pipeline 的用法 Item Pipeline 是项目管道。在前面我们已经了解了 Item Pipeline 的基本用法,本节我们再作详细了解它的用法。 首先我们看看 Item Pipeline 在 Scrapy 中的架构,如图 13-1 所示。 图中的最左侧即为 Item 阅读全文
posted @ 2021-03-29 22:17 学霸君主 阅读(129) 评论(0) 推荐(0)
摘要:13.5 Downloader Middleware 的用法 Downloader Middleware 即下载中间件,它是处于 Scrapy 的 Request 和 Response 之间的处理模块。我们首先来看看它的架构,如图 13-1 所示。 Scheduler 从队列中拿出一个 Reques 阅读全文
posted @ 2021-03-29 22:16 学霸君主 阅读(232) 评论(0) 推荐(0)
摘要:13.10 Scrapy 通用爬虫 通过 Scrapy,我们可以轻松地完成一个站点爬虫的编写。但如果抓取的站点量非常大,比如爬取各大媒体的新闻信息,多个 Spider 则可能包含很多重复代码。 如果我们将各个站点的 Spider 的公共部分保留下来,不同的部分提取出来作为单独的配置,如爬取规则、页面 阅读全文
posted @ 2021-03-29 22:15 学霸君主 阅读(150) 评论(0) 推荐(0)
摘要:13.9 Scrapy 对接 Splash 在上一节我们实现了 Scrapy 对接 Selenium 抓取淘宝商品的过程,这是一种抓取 JavaScript 动态渲染页面的方式。除了 Selenium,Splash 也可以实现同样的功能。本节我们来了解 Scrapy 对接 Splash 来进行页面抓 阅读全文
posted @ 2021-03-29 22:14 学霸君主 阅读(172) 评论(0) 推荐(0)
摘要:第十四章 分布式爬虫 在上一章中,我们了解了 Scrapy 爬虫框架的用法。这些框架都是在同一台主机上运行的,爬取效率比较有限。如果多台主机协同爬取,那么爬取效率必然会成倍增长,这就是分布式爬虫的优势。 本章我们就来了解一下分布式爬虫的基本原理,以及 Scrapy 实现分布式爬虫的流程。 阅读全文
posted @ 2021-03-29 22:12 学霸君主 阅读(30) 评论(0) 推荐(0)
摘要:13.13 Scrapy 爬取新浪微博 前面讲解了 Scrapy 中各个模块基本使用方法以及代理池、Cookies 池。接下来我们以一个反爬比较强的网站新浪微博为例,来实现一下 Scrapy 的大规模爬取。 1. 本节目标 本次爬取的目标是新浪微博用户的公开基本信息,如用户昵称、头像、用户的关注、粉 阅读全文
posted @ 2021-03-29 21:40 学霸君主 阅读(792) 评论(0) 推荐(0)
摘要:13.12 Scrapy 对接 Docker 环境配置问题可能一直是我们头疼的,我们可能遇到过如下的情况: 我们在本地写好了一个 Scrapy 爬虫项目,想要把它放到服务器上运行,但是服务器上没有安装 Python 环境。 别人给了我们一个 Scrapy 爬虫项目,项目中使用包的版本和我们本地环境版 阅读全文
posted @ 2021-03-29 21:39 学霸君主 阅读(119) 评论(0) 推荐(0)
摘要:14.4 Bloom Filter 的对接 首先回顾一下 Scrapy-Redis 的去重机制。Scrapy-Redis 将 Request 的指纹存储到了 Redis 集合中,每个指纹的长度为 40,例如 27adcc2e8979cdee0c9cecbbe8bf8ff51edefb61 就是一个指 阅读全文
posted @ 2021-03-29 21:37 学霸君主 阅读(87) 评论(0) 推荐(0)
摘要:14.3 Scrapy 分布式实现 接下来,我们会利用 Scrapy-Redis 来实现分布式的对接。 1. 准备工作 请确保已经成功实现了 Scrapy 新浪微博爬虫,Scrapy-Redis 库已经正确安装,如果还没安装,请参考第 1 章的安装说明。 2. 搭建 Redis 服务器 要实现分布式 阅读全文
posted @ 2021-03-29 21:36 学霸君主 阅读(91) 评论(0) 推荐(0)
摘要:14.2 Scrapy-Redis 源码解析 Scrapy-Redis 库已经为我们提供了 Scrapy 分布式的队列、调度器、去重等功能,其 GitHub 地址为:https://github.com/rmax/scrapy-redis。 本节我们深入了解一下,利用 Redis 如何实现 Scra 阅读全文
posted @ 2021-03-29 21:35 学霸君主 阅读(135) 评论(0) 推荐(0)
摘要:14.1 分布式爬虫原理 我们在前面已经实现了 Scrapy 微博爬虫,虽然爬虫是异步加多线程的,但是我们只能在一台主机上运行,所以爬取效率还是有限的,分布式爬虫则是将多台主机组合起来,共同完成一个爬取任务,这将大大提高爬取的效率。 1. 分布式爬虫架构 在了解分布式爬虫架构之前,首先回顾一下 Sc 阅读全文
posted @ 2021-03-29 21:34 学霸君主 阅读(82) 评论(0) 推荐(0)
摘要:15.4 Scrapyd 批量部署 我们在上一节实现了 Scrapyd 和 Docker 的对接,这样每台主机就不用再安装 Python 环境和安装 Scrapyd 了,直接执行一句 Docker 命令运行 Scrapyd 服务即可。但是这种做法有个前提,那就是每台主机都安装 Docker,然后再去 阅读全文
posted @ 2021-03-29 21:22 学霸君主 阅读(112) 评论(0) 推荐(0)