1 2 3 4
摘要: 11.1 Charles 的使用 Charles 是一个网络抓包工具,我们可以用它来做 App 的抓包分析,得到 App 运行过程中发生的所有网络请求和响应内容,这就和 Web 端浏览器的开发者工具 Network 部分看到的结果一致。 相比 Fiddler 来说,Charles 的功能更强大,而且 阅读全文
posted @ 2021-03-29 23:31 学霸君主 阅读(121) 评论(0) 推荐(0)
摘要: 第十一章 APP 的爬取 前文介绍的都是爬取 Web 网页的内容。随着移动互联网的发展,越来越多的企业并没有提供 Web 网页端的服务,而是直接开发了 App,更多更全的信息都是通过 App 来展示的。那么针对 App 我们可以爬取吗?当然可以。 App 的爬取相比 Web 端爬取更加容易,反爬虫能 阅读全文
posted @ 2021-03-29 23:26 学霸君主 阅读(105) 评论(0) 推荐(0)
摘要: 10.2 Cookies 池的搭建 很多时候,在爬取没有登录的情况下,我们也可以访问一部分页面或请求一些接口,因为毕竟网站本身需要做 SEO,不会对所有页面都设置登录限制。 但是,不登录直接爬取会有一些弊端,弊端主要有以下两点。 设置了登录限制的页面无法爬取。如某论坛设置了登录才可查看资源,某博客设 阅读全文
posted @ 2021-03-29 23:15 学霸君主 阅读(294) 评论(0) 推荐(0)
摘要: 10.1 模拟登录并爬取 GitHub 我们先以一个最简单的实例来了解模拟登录后页面的抓取过程,其原理在于模拟登录后 Cookies 的维护。 1. 本节目标 本节将讲解以 GitHub 为例来实现模拟登录的过程,同时爬取登录后才可以访问的页面信息,如好友动态、个人信息等内容。 我们应该都听说过 G 阅读全文
posted @ 2021-03-29 23:14 学霸君主 阅读(194) 评论(0) 推荐(0)
摘要: 11.5 Appium 爬取微信朋友圈 接下来,我们将实现微信朋友圈的爬取。 如果直接用 Charles 或 mitmproxy 来监听微信朋友圈的接口数据,这是无法实现爬取的,因为数据都是被加密的。而 Appium 不同,Appium 作为一个自动化测试工具可以直接模拟 App 的操作并可以获取当 阅读全文
posted @ 2021-03-29 23:13 学霸君主 阅读(177) 评论(0) 推荐(0)
摘要: 11.4 Appium 的基本使用 Appium 是一个跨平台移动端自动化测试工具,可以非常便捷地为 iOS 和 Android 平台创建自动化测试用例。它可以模拟 App 内部的各种操作,如点击、滑动、文本输入等,只要我们手工操作的动作 Appium 都可以完成。在前面我们了解过 Selenium 阅读全文
posted @ 2021-03-29 23:11 学霸君主 阅读(394) 评论(0) 推荐(0)
摘要: 11.3 mitmdump 爬取 “得到” App 电子书信息 “得到” App 是罗辑思维出品的一款碎片时间学习的 App,其官方网站为 https://www.igetget.com,App 内有很多学习资源。不过 “得到” App 没有对应的网页版,所以信息必须要通过 App 才可以获取。这次 阅读全文
posted @ 2021-03-29 23:10 学霸君主 阅读(278) 评论(0) 推荐(0)
摘要: 11.2 mitmproxy 的使用 mitmproxy 是一个支持 HTTP 和 HTTPS 的抓包程序,有类似 Fiddler、Charles 的功能,只不过它是一个控制台的形式操作。 mitmproxy 还有两个关联组件。一个是 mitmdump,它是 mitmproxy 的命令行接口,利用它 阅读全文
posted @ 2021-03-29 23:09 学霸君主 阅读(276) 评论(0) 推荐(0)
摘要: 12.3 pyspider 用法详解 前面我们了解了 pyspider 的基本用法,我们通过非常少的代码和便捷的可视化操作就完成了一个爬虫的编写,本节我们来总结一下它的详细用法。 1. 命令行 上面的实例通过如下命令启动 pyspider: pyspider all 命令行还有很多可配制参数,完整的 阅读全文
posted @ 2021-03-29 23:07 学霸君主 阅读(340) 评论(0) 推荐(1)
摘要: 12.2 pyspider 的基本使用 本节用一个实例来讲解 pyspider 的基本用法。 1. 本节目标 我们要爬取的目标是去哪儿网的旅游攻略,链接为 http://travel.qunar.com/travelbook/list.htm,我们要将所有攻略的作者、标题、出发日期、人均费用、攻略正 阅读全文
posted @ 2021-03-29 23:06 学霸君主 阅读(86) 评论(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 学霸君主 阅读(142) 评论(0) 推荐(0)
摘要: 第十二章 pyspider 框架的使用 前文基本上把爬虫的流程实现一遍,将不同的功能定义成不同的方法,甚至抽象出模块的概念。如微信公众号爬虫,我们已经有了爬虫框架的雏形,如调度器、队列、请求对象等,但是它的架构和模块还是太简单,远远达不到一个框架的要求。如果我们将各个组件独立出来,定义成不同的模块, 阅读全文
posted @ 2021-03-29 23:02 学霸君主 阅读(33) 评论(0) 推荐(0)
摘要: 11.6 Appium+mitmdump 爬取京东商品 在前文中,我们曾经用 Charles 分析过京东商品的评论数据,但是可以发现其参数相当复杂,Form 表单有很多加密参数。如果我们只用 Charles 探测到这个接口链接和参数,还是无法直接构造请求的参数,构造的过程涉及一些加密算法,也就无法直 阅读全文
posted @ 2021-03-29 22:41 学霸君主 阅读(233) 评论(0) 推荐(0)
摘要: 13.3 Selector 的用法 我们之前介绍了利用 Beautiful Soup、pyquery 以及正则表达式来提取网页数据,这确实非常方便。而 Scrapy 还提供了自己的数据提取方法,即 Selector(选择器)。Selector 是基于 lxml 来构建的,支持 XPath 选择器、C 阅读全文
posted @ 2021-03-29 22:40 学霸君主 阅读(100) 评论(0) 推荐(0)
摘要: 13.2 Scrapy 入门 接下来介绍一个简单的项目,完成一遍 Scrapy 抓取流程。通过这个过程,我们可以对 Scrapy 的基本用法和原理有大体了解。 1. 本节目标 本节要完成的任务如下。 创建一个 Scrapy 项目。 创建一个 Spider 来抓取站点和处理数据。 通过命令行将抓取的内 阅读全文
posted @ 2021-03-29 22:39 学霸君主 阅读(121) 评论(0) 推荐(0)
摘要: 13.1 Scrapy 框架介绍 Scrapy 是一个基于 Twisted 的异步处理框架,是纯 Python 实现的爬虫框架,其架构清晰,模块之间的耦合程度低,可扩展性极强,可以灵活完成各种需求。我们只需要定制开发几个模块就可以轻松实现一个爬虫。 1. 架构介绍 首先我们来看下 Scrapy 框架 阅读全文
posted @ 2021-03-29 22:20 学霸君主 阅读(134) 评论(0) 推荐(0)
摘要: 第十三章 Scrapy 框架的使用 在上一章我们了解了 pyspider 框架的用法,我们可以利用它快速完成爬虫的编写。不过 pyspider 框架也有一些缺点,比如可配置化程度不高,异常处理能力有限等,它对于一些反爬程度非常强的网站的爬取显得力不从心。所以本章我们再介绍一个爬虫框架 Scrapy。 阅读全文
posted @ 2021-03-29 22:18 学霸君主 阅读(40) 评论(0) 推荐(0)
摘要: 13.7 Item Pipeline 的用法 Item Pipeline 是项目管道。在前面我们已经了解了 Item Pipeline 的基本用法,本节我们再作详细了解它的用法。 首先我们看看 Item Pipeline 在 Scrapy 中的架构,如图 13-1 所示。 图中的最左侧即为 Item 阅读全文
posted @ 2021-03-29 22:17 学霸君主 阅读(128) 评论(0) 推荐(0)
摘要: 13.5 Downloader Middleware 的用法 Downloader Middleware 即下载中间件,它是处于 Scrapy 的 Request 和 Response 之间的处理模块。我们首先来看看它的架构,如图 13-1 所示。 Scheduler 从队列中拿出一个 Reques 阅读全文
posted @ 2021-03-29 22:16 学霸君主 阅读(222) 评论(0) 推荐(0)
摘要: 13.10 Scrapy 通用爬虫 通过 Scrapy,我们可以轻松地完成一个站点爬虫的编写。但如果抓取的站点量非常大,比如爬取各大媒体的新闻信息,多个 Spider 则可能包含很多重复代码。 如果我们将各个站点的 Spider 的公共部分保留下来,不同的部分提取出来作为单独的配置,如爬取规则、页面 阅读全文
posted @ 2021-03-29 22:15 学霸君主 阅读(148) 评论(0) 推荐(0)
摘要: 13.9 Scrapy 对接 Splash 在上一节我们实现了 Scrapy 对接 Selenium 抓取淘宝商品的过程,这是一种抓取 JavaScript 动态渲染页面的方式。除了 Selenium,Splash 也可以实现同样的功能。本节我们来了解 Scrapy 对接 Splash 来进行页面抓 阅读全文
posted @ 2021-03-29 22:14 学霸君主 阅读(168) 评论(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 学霸君主 阅读(786) 评论(0) 推荐(0)
摘要: 13.12 Scrapy 对接 Docker 环境配置问题可能一直是我们头疼的,我们可能遇到过如下的情况: 我们在本地写好了一个 Scrapy 爬虫项目,想要把它放到服务器上运行,但是服务器上没有安装 Python 环境。 别人给了我们一个 Scrapy 爬虫项目,项目中使用包的版本和我们本地环境版 阅读全文
posted @ 2021-03-29 21:39 学霸君主 阅读(110) 评论(0) 推荐(0)
摘要: 14.4 Bloom Filter 的对接 首先回顾一下 Scrapy-Redis 的去重机制。Scrapy-Redis 将 Request 的指纹存储到了 Redis 集合中,每个指纹的长度为 40,例如 27adcc2e8979cdee0c9cecbbe8bf8ff51edefb61 就是一个指 阅读全文
posted @ 2021-03-29 21:37 学霸君主 阅读(77) 评论(0) 推荐(0)
摘要: 14.3 Scrapy 分布式实现 接下来,我们会利用 Scrapy-Redis 来实现分布式的对接。 1. 准备工作 请确保已经成功实现了 Scrapy 新浪微博爬虫,Scrapy-Redis 库已经正确安装,如果还没安装,请参考第 1 章的安装说明。 2. 搭建 Redis 服务器 要实现分布式 阅读全文
posted @ 2021-03-29 21:36 学霸君主 阅读(86) 评论(0) 推荐(0)
摘要: 14.2 Scrapy-Redis 源码解析 Scrapy-Redis 库已经为我们提供了 Scrapy 分布式的队列、调度器、去重等功能,其 GitHub 地址为:https://github.com/rmax/scrapy-redis。 本节我们深入了解一下,利用 Redis 如何实现 Scra 阅读全文
posted @ 2021-03-29 21:35 学霸君主 阅读(128) 评论(0) 推荐(0)
摘要: 14.1 分布式爬虫原理 我们在前面已经实现了 Scrapy 微博爬虫,虽然爬虫是异步加多线程的,但是我们只能在一台主机上运行,所以爬取效率还是有限的,分布式爬虫则是将多台主机组合起来,共同完成一个爬取任务,这将大大提高爬取的效率。 1. 分布式爬虫架构 在了解分布式爬虫架构之前,首先回顾一下 Sc 阅读全文
posted @ 2021-03-29 21:34 学霸君主 阅读(79) 评论(0) 推荐(0)
摘要: 15.4 Scrapyd 批量部署 我们在上一节实现了 Scrapyd 和 Docker 的对接,这样每台主机就不用再安装 Python 环境和安装 Scrapyd 了,直接执行一句 Docker 命令运行 Scrapyd 服务即可。但是这种做法有个前提,那就是每台主机都安装 Docker,然后再去 阅读全文
posted @ 2021-03-29 21:22 学霸君主 阅读(102) 评论(0) 推荐(0)