网络爬虫
文章平均质量分 96
课程由浅入深 非常适合爬虫小白学习
埃菲尔没有塔尖
热爱学习,热爱分享,欢迎交流。
展开
-
结束语:从爬虫小白到高手的必经之路
如果你看到了本课时,那么恭喜你已经学完了本专栏课程的所有内容,爬虫的知识点很复杂,一路学过来相信你也经历了不少坎坷。本节课我们对网络爬虫所要学习的内容做一次总结,这里面也是我个人认为爬虫工程师应该具备的一些技术栈,由于专栏篇幅有限,肯定不可能把所有的知识点都覆盖到,但基础知识都已经涵盖了,下面我会把网络爬虫的知识点进行总结和梳理,如果你想深入学习网络爬虫的话可以参考。网络爬虫的学习关系到计算机网络、编程基础、前端开发、后端开发、App 开发与逆向、网络安全、数据库、运维、机器学习、数据分析等各个方向的内转载 2020-09-08 23:19:26 · 394 阅读 · 4 评论 -
第01讲:必知必会,掌握 HTTP 基本原理
1.URI 和 URL首先,我们来了解一下 URI 和 URL,URI 的全称为 Uniform Resource Identifier,即统一资源标志符,URL 的全称为 Universal Resource Locator,即统一资源定位符。举例来说,https://github.com/favicon.ico,它是一个 URL,也是一个 URI。即有这样的一个图标资源,我们用 URL/URI 来唯一指定了它的访问方式,这其中包括了访问协议 HTTPS、访问路径(即根目录)和资源名称 favicon转载 2021-01-19 19:25:43 · 886 阅读 · 2 评论 -
第02讲:夯实根基,Web 网页基础
网页的组成首先,我们来了解网页的基本组成,网页可以分为三大部分:HTML、CSS 和 JavaScript。如果把网页比作一个人的话,HTML 相当于骨架,JavaScript 相当于肌肉,CSS 相当于皮肤,三者结合起来才能形成一个完整的网页。下面我们来分别介绍一下这三部分的功能。1.HTMLHTML 是用来描述网页的一种语言,其全称叫作 Hyper Text Markup Language,即超文本标记语言。我们浏览的网页包括文字、按钮、图片和视频等各种复杂的元素,其基础架构就是 HTML。不转载 2021-01-11 14:02:26 · 451 阅读 · 1 评论 -
第03讲. 原理探究,了解爬虫的基本原理
1.爬虫概述我们可以把互联网比作一张大网,而爬虫(即网络爬虫)便是在网上爬行的蜘蛛。如果把网的节点比作一个个网页,爬虫爬到这就相当于访问了该页面,获取了其信息。可以把节点间的连线比作网页与网页之间的链接关系,这样蜘蛛通过一个节点后,可以顺着节点连线继续爬行到达下一个节点,即通过一个网页继续获取后续的网页,这样整个网的节点便可以被蜘蛛全部爬行到,网站的数据就可以被抓取下来了。简单来说,爬虫就是获取网页并提取和保存信息的自动化程序,下面概要介绍一下。2.获取网页爬虫首先要做的工作就是获取网页,这里就是获转载 2021-01-19 19:25:26 · 388 阅读 · 1 评论 -
第04讲: 基础探究,Session 与 Cookies
我们在浏览网站的过程中,经常会遇到需要登录的情况,而有些网页只有登录之后才可以访问,而且登录之后可以连续访问很多次网站,但是有时候过一段时间就需要重新登录。还有一些网站,在打开浏览器时就自动登录了,而且很长时间都不会失效,这种情况又是为什么?其实这里面涉及 Session 和 Cookies 的相关知识,本节就来揭开它们的神秘面纱。1.静态网页和动态网页在开始介绍它们之前,我们需要先了解一下静态网页和动态网页的概念。这里还是前面的示例代码,内容如下:<!DOCTYPE html><转载 2021-01-19 19:25:09 · 446 阅读 · 2 评论 -
第05讲:多路加速,了解多线程基本原理
我们知道,在一台计算机中,我们可以同时打开许多软件,比如同时浏览网页、听音乐、打字等等,看似非常正常。但仔细想想,为什么计算机可以做到这么多软件同时运行呢?这就涉及到计算机中的两个重要概念:多进程和多线程了。同样,在编写爬虫程序的时候,为了提高爬取效率,我们可能想同时运行多个爬虫任务。这里同样需要涉及多进程和多线程的知识。本课时,我们就先来了解一下多线程的基本原理,以及在 Python 中如何实现多线程。1.多线程的含义说起多线程,就不得不先说什么是线程。然而想要弄明白什么是线程,又不得不先说什么是转载 2021-01-11 14:07:31 · 662 阅读 · 2 评论 -
第06讲:多路加速,了解多进程基本原理
在上一课时我们了解了多线程的基本概念,同时我们也提到,Python 中的多线程是不能很好发挥多核优势的,如果想要发挥多核优势,最好还是使用多进程。那么本课时我们就来了解下多进程的基本概念和用 Python 实现多进程的方法。1.多进程的含义进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。顾名思义,多进程就是启用多个进程同时运行。由于进程是线程的集合,而且进程是由一个或多个线程构成的,所以多进程的运行意味着有大于或等于进程数量的线转载 2021-01-11 14:08:29 · 523 阅读 · 0 评论 -
第07讲:入门首选,Requests 库的基本使用
上一课时我们了解了一些学习爬虫所需要的基本知识。从本课时开始,我们正式步入Python 爬虫的大门。学习爬虫,最基础的便是模拟浏览器向服务器发出请求,那么我们需要从什么地方做起呢?请求需要我们自己来构造吗?需要关心请求这个数据结构的实现吗?需要了解 HTTP、TCP、IP 层的网络传输通信吗?需要知道服务器的响应和应答原理吗?可能你无从下手,不过不用担心,Python 的强大之处就是提供了功能齐全的类库来帮助我们完成这些请求。利用 Python 现有的库我们可以非常方便地实现网络请求的模拟,常见的库有转载 2021-01-11 14:04:08 · 640 阅读 · 0 评论 -
第08讲:解析无所不能的正则表达式
在上个课时中,我们学会了如何用 Requests 来获取网页的源代码,得到 HTML 代码。但我们如何从 HTML 代码中获取真正想要的数据呢?正则表达式就是一个有效的方法。本课时中,我们将学习正则表达式的相关用法。正则表达式是处理字符串的强大工具,它有自己特定的语法结构。有了它,我们就能实现字符串的检索、替换、匹配验证。当然,对于爬虫来说,有了它,要从 HTML 里提取想要的信息就非常方便了。实例引入说了这么多,可能我们对正则表达式的概念还是比较模糊,下面就用几个实例来看一下正则表达式的用法。转载 2021-01-11 14:06:47 · 381 阅读 · 0 评论 -
第09讲:爬虫解析利器 PyQuery 的使用
上一课时我们学习了正则表达式的基本用法,然而一旦你的正则表达式写法有问题,我们就无法获取需要的信息。你可能会思考:每个网页,都有一定的特殊结构和层级关系,而且很多节点都有 id 或 class 作为区分,我们可以借助它们的结构和属性来提取信息吗?这的确可行。这个课时我会为你介绍一个更加强大的 HTML 解析库:pyquery。利用它,我们可以直接解析 DOM 节点的结构,并通过 DOM 节点的一些属性快速进行内容提取。接下来,我们就来感受一下 pyquery 的强大之处。准备工作pyquery 是转载 2021-01-19 19:22:32 · 542 阅读 · 1 评论 -
第10讲:高效存储 MongoDB 的用法
上节课我们学习了如何用 pyquery 提取 HTML 中的信息,但是当我们成功提取了数据之后,该往哪里存放呢?用文本文件当然是可以的,但文本存储不方便检索。有没有既方便存,又方便检索的存储方式呢?当然有,本课时我将为你介绍一个文档型数据库 —— MongoDB。MongoDB 是由 C++ 语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式类似 JSON 对象,它的字段值可以包含其他文档、数组及文档数组,非常灵活。在这个课时中,我们就来看看 Python 3 下 M转载 2021-01-11 15:42:05 · 779 阅读 · 0 评论 -
第11讲:Reqeusts + PyQuery + PyMongo 基本案例实战
在前面我们已经学习了多进程、requests、正则表达式、pyquery、PyMongo 等的基本用法,但我们还没有完整地实现一个爬取案例。本课时,我们就来实现一个完整的网站爬虫案例,把前面学习的知识点串联起来,同时加深对这些知识点的理解。准备工作在本节课开始之前,我们需要做好如下的准备工作:安装好 Python3(最低为 3.6 版本),并能成功运行 Python3 程序。了解 Python 多进程的基本原理。了解 Python HTTP 请求库 requests 的基本用法。了解正则表达式转载 2021-01-19 19:22:15 · 458 阅读 · 0 评论 -
第12讲:Ajax 的原理和解析
当我们在用 requests 抓取页面的时候,得到的结果可能会和在浏览器中看到的不一样:在浏览器中正常显示的页面数据,使用 requests 却没有得到结果。这是因为 requests 获取的都是原始 HTML 文档,而浏览器中的页面则是经过 JavaScript 数据处理后生成的结果。这些数据的来源有多种,可能是通过 Ajax 加载的,可能是包含在 HTML 文档中的,也可能是经过 JavaScript 和特定算法计算后生成的。对于第 1 种情况,数据加载是一种异步加载方式,原始页面不会包含某些数据,只转载 2021-01-19 19:23:25 · 699 阅读 · 0 评论 -
第13讲:Ajax 爬取案例实战
上一课时我们学习了 Ajax 的基本原理和分析方法,这一课时我们结合实际案例,学习 Ajax 分析和爬取页面的具体实现。准备工作在开始学习之前,我们需要做好如下的准备工作:安装好 Python 3(最低为 3.6 版本),并能成功运行 Python 3 程序。了解 Python HTTP 请求库 requests 的基本用法。了解 Ajax 的基础知识和分析 Ajax 的基本方法。以上内容在前面的课时中均有讲解,如你尚未准备好建议先熟悉一下这些内容。爬取目标本课时我们以一个动态渲染网站为转载 2021-01-19 19:23:09 · 688 阅读 · 2 评论 -
第14讲:Selenium 的基本使用
上个课时我们讲解了 Ajax 的分析方法,利用 Ajax 接口我们可以非常方便地完成数据的爬取。只要我们能找到 Ajax 接口的规律,就可以通过某些参数构造出对应的的请求,数据自然就能被轻松爬取到。但是,在很多情况下,Ajax 请求的接口通常会包含加密的参数,如 token、sign 等,如:https://dynamic2.scrape.cuiqingcai.com/,它的 Ajax 接口是包含一个 token 参数的,如图所示。由于接口的请求加上了 token 参数,如果不深入分析并找到 toke转载 2021-01-11 15:42:36 · 748 阅读 · 0 评论 -
第15讲:Selenium 爬取实战
在上一课时我们学习了 Selenium 的基本用法,本课时我们就来结合一个实际的案例来体会一下 Selenium 的适用场景以及使用方法。1.准备工作在本课时开始之前,请确保已经做好了如下准备工作:安装好 Chrome 浏览器并正确配置了 ChromeDriver。安装好 Python (至少为 3.6 版本)并能成功运行 Python 程序。安装好了 Selenium 相关的包并能成功用 Selenium 打开 Chrome 浏览器。2.适用场景在前面的实战案例中,有的网页我们可以直接用转载 2021-01-11 14:03:03 · 1745 阅读 · 0 评论 -
第16讲:异步爬虫的原理和解析
我们知道爬虫是 IO 密集型任务,比如如果我们使用 requests 库来爬取某个站点的话,发出一个请求之后,程序必须要等待网站返回响应之后才能接着运行,而在等待响应的过程中,整个爬虫程序是一直在等待的,实际上没有做任何的事情。对于这种情况我们有没有优化方案呢?实例引入比如在这里我们看这么一个示例网站:https://static4.scrape.cuiqingcai.com/,如图所示。这个网站在内部实现返回响应的逻辑的时候特意加了 5 秒的延迟,也就是说如果我们用 requests 来爬取其中某转载 2021-01-11 16:42:47 · 1895 阅读 · 14 评论 -
第17讲:aiohttp 异步爬虫实战
在上一课时我们介绍了异步爬虫的基本原理和 asyncio 的基本用法,另外在最后简单提及了 aiohttp 实现网页爬取的过程,这一可是我们来介绍一下 aiohttp 的常见用法,以及通过一个实战案例来介绍下使用 aiohttp 完成网页异步爬取的过程。aiohttp前面介绍的 asyncio 模块内部实现了对 TCP、UDP、SSL 协议的异步操作,但是对于 HTTP 请求的异步操作来说,我们就需要用到 aiohttp 来实现了。aiohttp 是一个基于 asyncio 的异步 HTTP 网络模块转载 2021-01-13 11:36:48 · 8593 阅读 · 4 评论 -
第18讲:爬虫神器 Pyppeteer 的使用
在前面我们学习了 Selenium 的基本用法,它功能的确非常强大,但很多时候我们会发现 Selenium 有一些不太方便的地方,比如环境的配置,得安装好相关浏览器,比如 Chrome、Firefox 等等,然后还要到官方网站去下载对应的驱动,最重要的还需要安装对应的 Python Selenium 库,而且版本也得好好看看是否对应,确实不是很方便,另外如果要做大规模部署的话,环境配置的一些问题也是个头疼的事情。那么本课时我们就介绍另一个类似的替代品,叫作 Pyppeteer。注意,是叫作 Pyppete转载 2021-01-13 11:36:22 · 7119 阅读 · 4 评论 -
第19讲:Pyppeteer 爬取实战
在上一课时我们了解了 Pyppeteer 的基本用法,确实我们可以发现其相比 Selenium 有很多方便之处。本课时我们就来使用 Pyppeteer 针对之前的 Selenium 案例做一次改写,来体会一下二者的不同之处,同时也加强一下对 Pyppeteer 的理解和掌握情况。1.爬取目标本课时我们要爬取的目标和之前是一样的,还是 Selenium 的那个案例,地址为:https://dynamic2.scrape.cuiqingcai.com/,如下图所示。这个网站的每个详情页的 URL 都是转载 2021-01-19 19:21:52 · 1957 阅读 · 0 评论 -
第20讲:代理的基本原理和用法
我们在做爬虫的过程中经常会遇到这样的情况,最初爬虫正常运行,正常抓取数据,一切看起来都是那么的美好,然而一杯茶的功夫可能就会出现错误,比如 403 Forbidden,这时候打开网页一看,可能会看到 “您的 IP 访问频率太高” 这样的提示,或者跳出一个验证码让我们输入,输入之后才可能解封,但是输入之后过一会儿就又这样了。出现这种现象的原因是网站采取了一些反爬虫的措施,比如服务器会检测某个 IP 在单位时间内的请求次数,如果超过了这个阈值,那么会直接拒绝服务,返回一些错误信息,这种情况可以称之为封 IP,转载 2021-01-13 11:38:21 · 1395 阅读 · 0 评论 -
第21讲:IP代理池的搭建和使用
我们在上一课时了解了利用代理可以解决目标网站封 IP 的问题,但是如何实时高效地获取到大量可用的代理又是一个问题。首先在互联网上有大量公开的免费代理,当然我们也可以购买付费的代理 IP,但是代理不论是免费的还是付费的,都不能保证是可用的,因为可能此 IP 已被其他人使用来爬取同样的目标站点而被封禁,或者代理服务器突然发生故障或网络繁忙。一旦我们选用了一个不可用的代理,这势必会影响爬虫的工作效率。所以,我们需要提前做筛选,将不可用的代理剔除掉,保留可用代理。那么这个怎么来实现呢?这里就需要借助于一个叫作代转载 2021-01-11 16:40:31 · 3761 阅读 · 0 评论 -
第22讲:验证码反爬虫的基本原理
我们在浏览网站的时候经常会遇到各种各样的验证码,在多数情况下这些验证码会出现在登录账号的时候,也可能会出现在访问页面的过程中,严格来说,这些行为都算验证码反爬虫。本课时我们就来介绍下验证码反爬虫的基本原理及常见的验证码和解决方案。验证码验证码,全称叫作 Completely Automated Public Turing test to tell Computers and Humans Apart,意思是全自动区分计算机和人类的图灵测试,取了它们关键词的首字母变成了 CAPTCHA,它是一种用来区分转载 2021-01-19 19:26:20 · 1390 阅读 · 0 评论 -
第23讲:利用资源,学会用打码平台处理验证码
在前一课时我们介绍了多种多样的验证码,有图形文字的、有模拟点选的、有拖动滑动的,但其实归根结底都需要人来对某种情形做一些判断,然后把结果返回并提交。如果此时提交的验证码结果是正确的,并且通过了一些验证码的检测,就能成功突破这个验证码了。那么,既然验证码就是让人来识别的,那么机器怎么办呢?如果我们也不会什么算法,怎么去解这些验证码呢?此时如果有一个帮助我们来识别验证码的工具或平台就好了,让工具或平台把验证码识别的结果返回给我们,我们拿着结果提交,那不就好了吗?有这种工具或平台吗?还真有专门的打码平台帮助我转载 2021-01-19 21:13:56 · 1022 阅读 · 1 评论 -
第24讲:更智能的深度学习处理验证码
我们在前面讲解了如何使用打码平台来识别验证码,简单高效。但是也有一些缺点,比如效率可能没那么高,准确率也不一定能做到完全可控,并且需要付出一定的费用。本课时我们就来介绍使用深度学习来识别验证码的方法,训练好对应的模型就能更好地对验证码进行识别,并且准确率可控,节省一定的成本。本课时我们以深度学习识别滑块验证码为例来讲解深度学习对于此类验证码识别的实现。滑块验证码是怎样的呢?如图所示,验证码是一张矩形图,图片左侧会出现一个滑块,右侧会出现一个缺口,下侧会出现一个滑轨。左侧的滑块会随着滑轨的拖动而移动,如原创 2020-10-03 15:01:23 · 706 阅读 · 1 评论 -
第25讲:你有权限吗?解析模拟登录基本原理
在很多情况下,一些网站的页面或资源我们通常需要登录才能看到。比如访问 GitHub 的个人设置页面,如果不登录是无法查看的;比如 12306 买票提交订单的页面,如果不登录是无法提交订单的;再比如要发一条微博,如果不登录是无法发送的。我们之前学习的案例都是爬取的无需登录即可访问的站点,但是诸如上面例子的情况非常非常多,那假如我们想要用爬虫来访问这些页面,比如用爬虫修改 GitHub 的个人设置,用爬虫提交购票订单,用爬虫发微博,能做到吗?答案是可以,这里就需要用到一些模拟登录相关的技术了。那么本课时我们转载 2020-08-10 11:54:27 · 265 阅读 · 0 评论 -
第26讲:模拟登录爬取实战案例
在上一课时我们了解了网站登录验证和模拟登录的基本原理。网站登录验证主要有两种实现,一种是基于 Session + Cookies 的登录验证,另一种是基于 JWT 的登录验证,那么本课时我们就通过两个实例来分别讲解这两种登录验证的分析和模拟登录流程。准备工作在本课时开始之前,请你确保已经做好了如下准备工作:安装好了 Python (最好 3.6 及以上版本)并能成功运行 Python 程序;安装好了 requests 请求库并学会了其基本用法;安装好了 Selenium 库并学会了其基本用法。转载 2021-01-13 11:37:31 · 1295 阅读 · 0 评论 -
第27讲:令人抓狂的 JavaScript 混淆技术
我们在爬取网站的时候,经常会遇到各种各样类似加密的情形,比如:某个网站的 URL 带有一些看不懂的长串加密参数,想要抓取就必须要懂得这些参数是怎么构造的,否则我们连完整的 URL 都构造不出来,更不用说爬取了。分析某个网站的 Ajax 接口的时候,可以看到接口的一些参数也是加密的,或者 Request Headers 里面也可能带有一些加密参数,如果不知道这些参数的具体构造逻辑就无法直接用程序来模拟这些 Ajax 请求。翻看网站的 JavaScript 源代码,可以发现很多压缩了或者看不太懂的字符,转载 2021-01-19 21:14:14 · 2965 阅读 · 3 评论 -
第30讲:如何爬app的数据
前面我们介绍的都是爬取 Web 网页的内容。随着移动互联网的发展,越来越多的企业并没有提供 Web 网页端的服务,而是直接开发了 App,更多更全的信息都是通过 App 来展示的。那么针对 App 我们可以爬取吗?当然可以。我们知道 Web 站点有多种渲染和反爬方式,渲染分为服务端渲染和客户端渲染;反爬也是多种多样,如请求头验证、WebDriver 限制、验证码、字体反爬、封禁 IP、账号验证等等,综合来看 Web 端的反爬虫方案也是多种多样。但 App 的情况略有不同,一般来说,App 的数据通信大都转载 2021-01-11 16:42:04 · 5228 阅读 · 0 评论 -
第31讲:抓包利器 Charles 的使用
本课时我们主要学习如何使用 Charles。Charles 是一个网络抓包工具,我们可以用它来做 App 的抓包分析,得到 App 运行过程中发生的所有网络请求和响应内容,这就和 Web 端浏览器的开发者工具 Network 部分看到的结果一致。Charles、Fiddler 等都是非常强大的 HTTP 抓包软件,功能基本类似,不过 Charles 的跨平台支持更好。所以我们选用 Charles 作为主要的移动端抓包工具,用于分析移动 App 的数据包,辅助完成 App 数据抓取工作。本节目标本节我转载 2021-01-13 11:38:01 · 529 阅读 · 0 评论 -
第32讲:实时处理利器 mitmproxy 的使用
在上一节课我们讲解了 Charles 的使用,它可以帮助我们抓取 HTTP 和 HTTPS 的数据包,抓到请求之后,我们如果能够分析出接口请求的一些规律,就能轻松通过 Python 脚本来进行改写。可是当请求里面包含一些无规律的参数的时候,可能就束手无策了。本节课我们介绍一个叫作 mitmproxy 的工具,它可以对抓包的结果通过脚本进行实时处理和保存,接下来我们来一起了解下吧。1.介绍mitmproxy 是一个支持 HTTP 和 HTTPS 的抓包程序,有类似 Fiddler、Charles 的功能,转载 2021-01-13 11:35:53 · 2376 阅读 · 0 评论 -
第33讲:可见即可爬,Appium 的使用
本课时我们主要学习如何使用 Appium。Appium 是一个跨平台移动端自动化测试工具,可以非常便捷地为 iOS 和 Android 平台创建自动化测试用例。它可以模拟 App 内部的各种操作,如点击、滑动、文本输入等,只要我们手工操作的动作 Appium 都可以完成。在前面我们了解过 Selenium,它是一个网页端的自动化测试工具。Appium 实际上继承了 Selenium,Appium 也是利用 WebDriver 来实现 App 的自动化测试的。对 iOS 设备来说,Appium 使用 UIA转载 2021-01-11 16:41:28 · 817 阅读 · 0 评论 -
第34讲:更好用的自动化工具 airtest 的使用
在上一节课我们了解了 Appium 的用法,利用 Appium 可以方便地完成 App 的自动化控制,但在使用过程中或多或少还会有些不方便的地方,比如响应速度慢,提供的 API 功能有限等。本课时我们再介绍另外一个更好用的自动化测试工具,叫作 airtest,它提供了一些更好用的 API,同时提供了非常强大的 IDE,开发效率和响应速度相比 Appium 也有提升。1.Airtest 概况AirtestProject 是由网易游戏推出的一款自动化测试框架,项目构成如下。Airtest:是一个跨平台转载 2021-01-19 19:24:43 · 1752 阅读 · 0 评论 -
第35讲:Xposed+模拟器的详细使用
如果你对逆向有所涉猎的话,可能听说过 Hook,利用 Hook 技术我们可以在某一逻辑的前后加入自定义的逻辑处理代码,几乎可以实现任意逻辑的修改。在前面的 JavaScript 逆向实战课时我们也初步体会了 Hook 的功效,如果你对 Hook 的概念还不太了解,可以搜索一下“Hook 技术”相关的内容来了解下。对于 App 来说,Hook 技术应用非常广泛。比如朋友圈微信步数的修改,其实就是通过 Hook 数据发送的方式实现步数的修改。比如处理安卓的 SSL Pining,用 Hook 技术也可以修改转载 2021-01-19 21:13:35 · 4065 阅读 · 0 评论 -
第36讲: 使用Jeb工具反编译安卓APK
现在我们可以看到很多 App 在请求 API 的时候都有加密参数,前面我们也介绍了一种利用 mitmdump 来实时抓取数据的方法,但是这总归还有些不方便的地方。如果要想拿到 App 发送的请求中包含哪些加密参数,就得剖析本源,深入到 App 内部去找到这些加密参数的构造逻辑,理清这些逻辑之后,我们就能自己用算法实现出来了。这其中就需要一定的逆向操作,我们可能需要对 App 进行反编译,然后通过分析源码的逻辑找到对应的加密位置。所以,本课时我们来用一个示例介绍App 逆向相关操作。1.案例介绍这里我转载 2021-01-11 14:03:38 · 10341 阅读 · 4 评论 -
第41讲:Scrapy框架的介绍
在前面编写爬虫的时候,如果我们使用 requests、aiohttp 等库,需要从头至尾把爬虫完整地实现一遍,比如说异常处理、爬取调度等,如果写的多了,的确会比较麻烦。那么有没有什么办法可以提升我们编写爬虫的效率呢?当然是有的,那就是利用现有的爬虫框架。说到 Python 的爬虫框架,Scrapy 当之无愧是最流行最强大的框架了。本节我们就来初步认识一下 Scrapy,后面的课时我们会对 Scrapy 的功能模块进行详细介绍。Scrapy 介绍Scrapy 是一个基于 Twisted 的异步处理框架转载 2021-01-07 16:28:20 · 371 阅读 · 0 评论 -
第42讲:scrapy框架的基本使用
接下来介绍一个简单的项目,完成一遍 Scrapy 抓取流程。通过这个过程,我们可以对 Scrapy 的基本用法和原理有大体了解。本节目标本节要完成的任务如下。创建一个 Scrapy 项目。创建一个 Spider 来抓取站点和处理数据。通过命令行将抓取的内容导出。将抓取的内容保存到 MongoDB 数据库。本节抓取的目标站点为 http://quotes.toscrape.com/。准备工作我们需要安装好 Scrapy 框架、MongoDB 和 PyMongo 库。如果尚未安装,请参照之转载 2021-01-07 16:27:57 · 486 阅读 · 0 评论 -
第43讲:灵活好用的 Spider 的用法
在上一节课我们通过实例了解了 Scrapy 的基本使用方法,在这个过程中,我们用到了 Spider 来编写爬虫逻辑,同时用到了一些选择器来对结果进行选择。在这一节课,我们就对 Spider 和 Selector 的基本用法作一个总结。Spider 的用法在 Scrapy 中,要抓取网站的链接配置、抓取逻辑、解析逻辑等其实都是在 Spider 中配置的。在前一节课的实例中,我们发现抓取逻辑也是在 Spider 中完成的。本节课我们就来专门了解一下 Spider 的基本用法。Spider 运行流程在实转载 2021-01-05 16:13:05 · 1089 阅读 · 0 评论 -
第44讲:scrapy中间键Middleware的使用
我们在 Scrapy 架构中,可以看到有一个叫作 Middleware 的概念,中文翻译过来就叫作中间件,在 Scrapy 中有两种 Middleware,一种是 Spider Middleware,另一种是 Downloader Middleware,本节课我们分别来介绍下。Spider Middleware 的用法Spider Middleware 是介入 Scrapy 的 Spider 处理机制的钩子框架。当 Downloader 生成 Response 之后,Response 会被发送给 Sp转载 2021-01-04 20:02:24 · 784 阅读 · 0 评论 -
第45讲:哪都能存,Item Pipeline 的用法
在前面的示例中我们已经了解了 Item Pipeline 项目管道的基本概念,本节课我们就深入详细讲解它的用法。首先我们看看 Item Pipeline 在 Scrapy 中的架构,如图所示。图中的最左侧即为 Item Pipeline,它的调用发生在 Spider 产生 Item 之后。当 Spider 解析完 Response 之后,Item 就会传递到 Item Pipeline,被定义的 Item Pipeline 组件会顺次调用,完成一连串的处理过程,比如数据清洗、存储等。它的主要功能有:转载 2021-01-05 16:12:34 · 685 阅读 · 0 评论