摘要:
序二 众所周知,人工智能的这次浪潮和深度学习技术的突破密不可分,却很少有人会谈论另一位幕后英雄,即数据。如果不是网络上有如此多的图片,李飞飞教授也无法构建近千万的标注图片集合 ImageNet,从而成就深度学习技术在图像识别领域的突破。如果不是在网络上有了如此多的聊天数据,小冰也不会学习到人类的情商 阅读全文
posted @ 2021-03-30 22:28
学霸君主
阅读(183)
评论(0)
推荐(0)
摘要:
1.3 解析库的安装 抓取网页代码之后,下一步就是从网页中提取信息。提取信息的方式有多种多样,可以使用正则来提取,但是写起来相对比较烦琐。这里还有许多强大的解析库,如 lxml、Beautiful Soup、pyquery 等。此外,还提供了非常强大的解析方法,如 XPath 解析和 CSS 选择器 阅读全文
posted @ 2021-03-30 22:25
学霸君主
阅读(364)
评论(0)
推荐(0)
摘要:
1.2 请求库的安装 爬虫可以简单分为几步:抓取页面、分析页面和存储数据。 在抓取页面的过程中,我们需要模拟浏览器向服务器发出请求,所以需要用到一些 Python 库来实现 HTTP 请求操作。在本书中,我们用到的第三方库有 requests、Selenium 和 aiohttp 等。 在本节中,我 阅读全文
posted @ 2021-03-30 22:22
学霸君主
阅读(504)
评论(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
学霸君主
阅读(165)
评论(0)
推荐(0)
摘要:
1.7 App 爬取相关库的安装 除了 Web 网页,爬虫也可以抓取 App 的数据。App 中的页面要加载出来,首先需要获取数据,而这些数据一般是通过请求服务器的接口来获取的。由于 App 没有浏览器这种可以比较直观地看到后台请求的工具,所以主要用一些抓包技术来抓取数据。 本书介绍的抓包工具有 C 阅读全文
posted @ 2021-03-30 22:12
学霸君主
阅读(244)
评论(0)
推荐(0)
摘要:
2.1 HTTP 基本原理 在本节中,我们会详细了解 HTTP 的基本原理,了解在浏览器中敲入 URL 到获取网页内容之间发生了什么。了解了这些内容,有助于我们进一步了解爬虫的基本原理。 2.1.1 URI 和 URL 这里我们先了解一下 URI 和 URL,URI 的全称为 Uniform Res 阅读全文
posted @ 2021-03-30 22:09
学霸君主
阅读(301)
评论(1)
推荐(0)
摘要:
1.9 部署相关库的安装 如果想要大规模抓取数据,那么一定会用到分布式爬虫。对于分布式爬虫来说,我们需要多台主机,每台主机有多个爬虫任务,但是源代码其实只有一份。此时我们需要做的就是将一份代码同时部署到多台主机上来协同运行,那么怎么去部署就是另一个值得思考的问题。 对于 Scrapy 来说,它有一个 阅读全文
posted @ 2021-03-30 22:06
学霸君主
阅读(140)
评论(0)
推荐(0)
摘要:
2.4 会话和 Cookies 在浏览网站的过程中,我们经常会遇到需要登录的情况,有些页面只有登录之后才可以访问,而且登录之后可以连续访问很多次网站,但是有时候过一段时间就需要重新登录。还有一些网站,在打开浏览器时就自动登录了,而且很长时间都不会失效,这种情况又是为什么?其实这里面涉及会话(Sess 阅读全文
posted @ 2021-03-30 22:03
学霸君主
阅读(124)
评论(0)
推荐(0)
摘要:
2.3 爬虫的基本原理 我们可以把互联网比作一张大网,而爬虫(即网络爬虫)便是在网上爬行的蜘蛛。把网的节点比作一个个网页,爬虫爬到这就相当于访问了该页面,获取了其信息。可以把节点间的连线比作网页与网页之间的链接关系,这样蜘蛛通过一个节点后,可以顺着节点连线继续爬行到达下一个节点,即通过一个网页继续获 阅读全文
posted @ 2021-03-30 22:00
学霸君主
阅读(153)
评论(0)
推荐(0)
摘要:
2.2 网页基础 用浏览器访问网站时,页面各不相同,你有没有想过它为何会呈现这个样子呢?本节中,我们就来了解一下网页的基本组成、结构和节点等内容。 2.2.1 网页的组成 网页可以分为三大部分 —— HTML、CSS 和 JavaScript。如果把网页比作一个人的话,HTML 相当于骨架,Java 阅读全文
posted @ 2021-03-30 21:57
学霸君主
阅读(151)
评论(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
学霸君主
阅读(199)
评论(0)
推荐(0)
摘要:
第三章 基本库的使用 学习爬虫,最初的操作便是模拟浏览器向服务器发出请求,那么我们需要从哪个地方做起呢?请求需要我们自己来构造吗?需要关心请求这个数据结构的实现吗?需要了解 HTTP、TCP、IP 层的网络传输通信吗?需要知道服务器的响应和应答原理吗? 可能你不知道无从下手,不过不用担心,Pytho 阅读全文
posted @ 2021-03-30 21:50
学霸君主
阅读(30)
评论(0)
推荐(0)
摘要:
3.3 正则表达式 本节中,我们看一下正则表达式的相关用法。正则表达式是处理字符串的强大工具,它有自己特定的语法结构,有了它,实现字符串的检索、替换、匹配验证都不在话下。 当然,对于爬虫来说,有了它,从 HTML 里提取想要的信息就非常方便了。 1. 实例引入 说了这么多,可能我们对它到底是个什么还 阅读全文
posted @ 2021-03-30 21:47
学霸君主
阅读(154)
评论(0)
推荐(0)
摘要:
3.2 使用 requests 上一节中,我们了解了 urllib 的基本用法,但是其中确实有不方便的地方,比如处理网页验证和 Cookies 时,需要写 Opener 和 Handler 来处理。为了更加方便地实现这些操作,就有了更为强大的库 requests,有了它,Cookies、登录验证、代 阅读全文
posted @ 2021-03-30 21:44
学霸君主
阅读(195)
评论(0)
推荐(0)
摘要:
4.3 使用 pyquery 在上一节中,我们介绍了 Beautiful Soup 的用法,它是一个非常强大的网页解析库,你是否觉得它的一些方法用起来有点不适应?有没有觉得它的 CSS 选择器的功能没有那么强大? 如果你对 Web 有所涉及,如果你比较喜欢用 CSS 选择器,如果你对 jQuery 阅读全文
posted @ 2021-03-30 21:41
学霸君主
阅读(112)
评论(0)
推荐(0)
摘要:
4.1 使用 XPath XPath,全称 XML Path Language,即 XML 路径语言,它是一门在 XML 文档中查找信息的语言。它最初是用来搜寻 XML 文档的,但是它同样适用于 HTML 文档的搜索。 所以在做爬虫时,我们完全可以使用 XPath 来做相应的信息抽取。本节中,我们就 阅读全文
posted @ 2021-03-30 21:38
学霸君主
阅读(136)
评论(0)
推荐(0)
摘要:
第四章 解析库的使用 上一章中,我们实现了一个最基本的爬虫,但提取页面信息时使用的是正则表达式,这还是比较烦琐,而且万一有地方写错了,可能导致匹配失败,所以使用正则表达式提取页面信息多多少少还是有些不方便。 对于网页的节点来说,它可以定义 id、class 或其他属性。而且节点之间还有层次关系,在网 阅读全文
posted @ 2021-03-30 21:35
学霸君主
阅读(31)
评论(0)
推荐(0)
摘要:
第五章 数据存储 用解析器解析出数据之后,接下来就是存储数据了。保存的形式可以多种多样,最简单的形式是直接保存为文本文件,如 TXT、JSON、CSV 等。另外,还可以保存到数据库中,如关系型数据库 MySQL,非关系型数据库 MongoDB、Redis 等。 阅读全文
posted @ 2021-03-30 21:31
学霸君主
阅读(16)
评论(0)
推荐(0)
摘要:
6.1 什么是 Ajax Ajax,全称为 Asynchronous JavaScript and XML,即异步的 JavaScript 和 XML。它不是一门编程语言,而是利用 JavaScript 在保证页面不被刷新、页面链接不改变的情况下与服务器交换数据并更新部分网页的技术。 对于传统的网页 阅读全文
posted @ 2021-03-30 21:28
学霸君主
阅读(92)
评论(0)
推荐(0)
摘要:
第六章 Ajax 数据爬取 有时候我们在用 requests 抓取页面的时候,得到的结果可能和在浏览器中看到的不一样:在浏览器中可以看到正常显示的页面数据,但是使用 requests 得到的结果并没有。这是因为 requests 获取的都是原始的 HTML 文档,而浏览器中的页面则是经过 JavaS 阅读全文
posted @ 2021-03-30 21:25
学霸君主
阅读(38)
评论(0)
推荐(0)
摘要:
5.3 非关系型数据库存储 NoSQL,全称 Not Only SQL,意为不仅仅是 SQL,泛指非关系型数据库。NoSQL 是基于键值对的,而且不需要经过 SQL 层的解析,数据之间没有耦合性,性能非常高。 非关系型数据库又可细分如下。 键值存储数据库:代表有 Redis、Voldemort 和 阅读全文
posted @ 2021-03-30 21:22
学霸君主
阅读(312)
评论(0)
推荐(0)
摘要:
5.2 关系型数据库存储 关系型数据库是基于关系模型的数据库,而关系模型是通过二维表来保存的,所以它的存储方式就是行列组成的表,每一列是一个字段,每一行是一条记录。表可以看作某个实体的集合,而实体之间存在联系,这就需要表与表之间的关联关系来体现,如主键外键的关联关系。多个表组成一个数据库,也就是关系 阅读全文
posted @ 2021-03-30 21:19
学霸君主
阅读(496)
评论(0)
推荐(0)
摘要:
6.4 分析 Ajax 爬取今日头条街拍美图 本节中,我们以今日头条为例来尝试通过分析 Ajax 请求来抓取网页数据的方法。这次要抓取的目标是今日头条的街拍美图,抓取完成之后,将每组图片分文件夹下载到本地并保存下来。 1. 准备工作 在本节开始之前,请确保已经安装好 requests 库。如果没有安 阅读全文
posted @ 2021-03-30 21:16
学霸君主
阅读(129)
评论(0)
推荐(0)
摘要:
6.3 Ajax 结果提取 这里仍然以微博为例,接下来用 Python 来模拟这些 Ajax 请求,把我发过的微博爬取下来。 1. 分析请求 打开 Ajax 的 XHR 过滤器,然后一直滑动页面以加载新的微博内容。可以看到,会不断有 Ajax 请求发出。 选定其中一个请求,分析它的参数信息。点击该请 阅读全文
posted @ 2021-03-30 20:41
学霸君主
阅读(128)
评论(0)
推荐(0)
摘要:
6.2 Ajax 分析方法 这里还以前面的微博为例,我们知道拖动刷新的内容由 Ajax 加载,而且页面的 URL 没有变化,那么应该到哪里去查看这些 Ajax 请求呢? 1. 查看请求 这里还需要借助浏览器的开发者工具,下面以 Chrome 浏览器为例来介绍。 首先,用 Chrome 浏览器打开微博 阅读全文
posted @ 2021-03-30 20:38
学霸君主
阅读(75)
评论(0)
推荐(0)
摘要:
7.2 Splash 的使用 Splash 是一个 JavaScript 渲染服务,是一个带有 HTTP API 的轻量级浏览器,同时它对接了 Python 中的 Twisted 和 QT 库。利用它,我们同样可以实现动态渲染页面的抓取。 1. 功能介绍 利用 Splash 我们可以实现如下功能: 阅读全文
posted @ 2021-03-30 20:35
学霸君主
阅读(319)
评论(0)
推荐(0)
摘要:
7.1 Selenium 的使用 Selenium 是一个自动化测试工具,利用它可以驱动浏览器执行特定的动作,如点击、下拉等操作,同时还可以获取浏览器当前呈现的页面的源代码,做到可见即可爬。对于一些 JavaScript 动态渲染的页面来说,此种抓取方式非常有效。本节中,就让我们来感受一下它的强大之 阅读全文
posted @ 2021-03-30 20:31
学霸君主
阅读(189)
评论(0)
推荐(0)
摘要:
第七章 动态渲染页面抓取 在前一章中,我们了解了 Ajax 的分析和抓取方式,这其实也是 JavaScript 动态渲染的页面的一种情形,通过直接分析 Ajax,我们仍然可以借助 requests 或 urllib 来实现数据爬取。 不过 JavaScript 动态渲染的页面不止 Ajax 这一种。 阅读全文
posted @ 2021-03-30 20:28
学霸君主
阅读(96)
评论(0)
推荐(0)
摘要:
8.1 图形验证码的识别 我们首先识别最简单的一种验证码,即图形验证码。这种验证码最早出现,现在也很常见,一般由 4 位字母或者数字组成。例如,中国知网的注册页面有类似的验证码,链接为:http://my.cnki.net/elibregister/commonRegister.aspx,页面如图 阅读全文
posted @ 2021-03-30 20:25
学霸君主
阅读(441)
评论(0)
推荐(0)
摘要:
第八章 验证码的识别 目前,许多网站采取各种各样的措施来反爬虫,其中一个措施便是使用验证码。随着技术的发展,验证码的花样越来越多。验证码最初是几个数字组合的简单的图形验证码,后来加入了英文字母和混淆曲线。有的网站还可能看到中文字符的验证码,这使得识别愈发困难。 后来 12306 验证码的出现使得行为 阅读全文
posted @ 2021-03-30 20:22
学霸君主
阅读(62)
评论(0)
推荐(0)
摘要:
7.4 使用 Selenium 爬取淘宝商品 在前一章中,我们已经成功尝试分析 Ajax 来抓取相关数据,但是并不是所有页面都可以通过分析 Ajax 来完成抓取。比如,淘宝,它的整个页面数据确实也是通过 Ajax 获取的,但是这些 Ajax 接口参数比较复杂,可能会包含加密密钥等,所以如果想自己构造 阅读全文
posted @ 2021-03-30 20:19
学霸君主
阅读(316)
评论(0)
推荐(0)
摘要:
7.3 Splash 负载均衡配置 用 Splash 做页面抓取时,如果爬取的量非常大,任务非常多,用一个 Splash 服务来处理的话,未免压力太大了,此时可以考虑搭建一个负载均衡器来把压力分散到各个服务器上。这相当于多台机器多个服务共同参与任务的处理,可以减小单个 Splash 服务的压力。 1 阅读全文
posted @ 2021-03-30 20:16
学霸君主
阅读(54)
评论(0)
推荐(0)
摘要:
8.3 点触验证码的识别 除了极验验证码,还有另一种常见且应用广泛的验证码,即点触验证码。 可能你对这个名字比较陌生,但是肯定见过类似的验证码,比如 12306 就是典型的点触验证码,如图 8-18 所示。 图 8-18 12306 验证码 直接点击图中符合要求的图。所有答案均正确,验证才会成功。如 阅读全文
posted @ 2021-03-30 20:12
学霸君主
阅读(519)
评论(0)
推荐(0)
摘要:
9.2 代理池的维护 我们在上一节了解了利用代理可以解决目标网站封 IP 的问题。在网上有大量公开的免费代理,或者我们也可以购买付费的代理 IP,但是代理不论是免费的还是付费的,都不能保证都是可用的,因为可能此 IP 被其他人使用来爬取同样的目标站点而被封禁,或者代理服务器突然发生故障或网络繁忙。一 阅读全文
posted @ 2021-03-30 20:09
学霸君主
阅读(166)
评论(0)
推荐(0)
摘要:
第九章 代理的使用 我们在做爬虫的过程中经常会遇到这样的情况,最初爬虫正常运行,正常抓取数据,一切看起来都是那么的美好,然而一杯茶的功夫可能就会出现错误,比如 403 Forbidden,这时候打开网页一看,可能会看到 “您的 IP 访问频率太高” 这样的提示,或者跳出一个验证码让我们输入,输入之后 阅读全文
posted @ 2021-03-30 20:06
学霸君主
阅读(36)
评论(0)
推荐(0)
摘要:
8.4 微博宫格验证码的识别 本节我们将介绍新浪微博宫格验证码的识别。微博宫格验证码是一种新型交互式验证码,每个宫格之间会有一条指示连线,指示了应该的滑动轨迹。我们要按照滑动轨迹依次从起始宫格滑动到终止宫格,才可以完成验证,如图 8-24 所示。 图 8-24 验证码示例 鼠标滑动后的轨迹会以黄色的 阅读全文
posted @ 2021-03-30 20:03
学霸君主
阅读(266)
评论(0)
推荐(0)
摘要:
第十章 模拟登录 很多情况下,页面的某些信息需要登录才可以查看。对于爬虫来说,需要爬取的信息如果需要登录才可以看到的话,那么我们就需要做一些模拟登录的事情。 在前面我们了解了会话和 Cookies 的用法。简单来说,打开网页然后模拟登录,这实际上是在客户端生成了 Cookies,而 Cookies 阅读全文
posted @ 2021-03-30 20:00
学霸君主
阅读(57)
评论(0)
推荐(0)
摘要:
9.5 使用代理爬取微信公众号文章 前面讲解了代理池的维护和付费代理的相关使用方法,接下来我们进行一下实战演练,利用代理来爬取微信公众号的文章。 1. 本节目标 我们的主要目标是利用代理爬取微信公众号的文章,提取正文、发表日期、公众号等内容,爬取来源是搜狗微信,其链接为 http://weixin. 阅读全文
posted @ 2021-03-30 19:57
学霸君主
阅读(223)
评论(0)
推荐(0)
摘要:
9.4 ADSL 拨号代理 我们尝试维护过一个代理池。代理池可以挑选出许多可用代理,但是常常其稳定性不高、响应速度慢,而且这些代理通常是公共代理,可能不止一人同时使用,其 IP 被封的概率很大。另外,这些代理可能有效时间比较短,虽然代理池一直在筛选,但如果没有及时更新状态,也有可能获取到不可用的代理 阅读全文
posted @ 2021-03-30 19:53
学霸君主
阅读(118)
评论(0)
推荐(0)
摘要:
9.3 付费代理的使用 相对免费代理来说,付费代理的稳定性更高。本节将介绍爬虫付费代理的相关使用过程。 1. 付费代理分类 付费代理分为两类: 一类提供接口获取海量代理,按天或者按量收费,如讯代理。 一类搭建了代理隧道,直接设置固定域名代理,如阿布云代理。 本节分别以两家代表性的代理网站为例,讲解这 阅读全文
posted @ 2021-03-30 19:51
学霸君主
阅读(149)
评论(0)
推荐(0)

浙公网安备 33010602011771号