3 SpiderLiH

尚未进行身份认证

我要认证

菜鸡小白一个

等级
TA的排名 2w+

第17讲:aiohttp 异步爬虫实战

在上一课时我们介绍了异步爬虫的基本原理和 asyncio 的基本用法,另外在最后简单提及了 aiohttp 实现网页爬取的过程,这一可是我们来介绍一下 aiohttp 的常见用法,以及通过一个实战案例来介绍下使用 aiohttp 完成网页异步爬取的过程。aiohttp前面介绍的 asyncio 模块内部实现了对 TCP、UDP、SSL 协议的异步操作,但是对于 HTTP 请求的异步操作来说,我们就需要用到 aiohttp 来实现了。aiohttp 是一个基于 asyncio 的异步 HTTP 网络模块

2020-09-16 23:32:56

第33讲:可见即可爬,Appium 的使用

本课时我们主要学习如何使用 Appium。Appium 是一个跨平台移动端自动化测试工具,可以非常便捷地为 iOS 和 Android 平台创建自动化测试用例。它可以模拟 App 内部的各种操作,如点击、滑动、文本输入等,只要我们手工操作的动作 Appium 都可以完成。在前面我们了解过 Selenium,它是一个网页端的自动化测试工具。Appium 实际上继承了 Selenium,Appium 也是利用 WebDriver 来实现 App 的自动化测试的。对 iOS 设备来说,Appium 使用 UIA

2020-09-16 23:08:04

第30讲:App 爬虫是怎么着情况?

前面我们介绍的都是爬取 Web 网页的内容。随着移动互联网的发展,越来越多的企业并没有提供 Web 网页端的服务,而是直接开发了 App,更多更全的信息都是通过 App 来展示的。那么针对 App 我们可以爬取吗?当然可以。我们知道 Web 站点有多种渲染和反爬方式,渲染分为服务端渲染和客户端渲染;反爬也是多种多样,如请求头验证、WebDriver 限制、验证码、字体反爬、封禁 IP、账号验证等等,综合来看 Web 端的反爬虫方案也是多种多样。但 App 的情况略有不同,一般来说,App 的数据通信大都

2020-09-16 22:47:04

第09讲:爬虫解析利器 PyQuery 的使用

上一课时我们学习了正则表达式的基本用法,然而一旦你的正则表达式写法有问题,我们就无法获取需要的信息。你可能会思考:每个网页,都有一定的特殊结构和层级关系,而且很多节点都有 id 或 class 作为区分,我们可以借助它们的结构和属性来提取信息吗?这的确可行。这个课时我会为你介绍一个更加强大的 HTML 解析库:pyquery。利用它,我们可以直接解析 DOM 节点的结构,并通过 DOM 节点的一些属性快速进行内容提取。接下来,我们就来感受一下 pyquery 的强大之处。准备工作pyquery 是

2020-09-09 23:24:50

结束语:从爬虫小白到高手的必经之路

如果你看到了本课时,那么恭喜你已经学完了本专栏课程的所有内容,爬虫的知识点很复杂,一路学过来相信你也经历了不少坎坷。本节课我们对网络爬虫所要学习的内容做一次总结,这里面也是我个人认为爬虫工程师应该具备的一些技术栈,由于专栏篇幅有限,肯定不可能把所有的知识点都覆盖到,但基础知识都已经涵盖了,下面我会把网络爬虫的知识点进行总结和梳理,如果你想深入学习网络爬虫的话可以参考。网络爬虫的学习关系到计算机网络、编程基础、前端开发、后端开发、App 开发与逆向、网络安全、数据库、运维、机器学习、数据分析等各个方向的内

2020-09-08 23:19:26

第46讲:遇到动态页面怎么办?详解渲染页面爬取

前面我们已经介绍了 Scrapy 的一些常见用法,包括服务端渲染页面的抓取和 API 的抓取,Scrapy 发起 Request 之后,返回的 Response 里面就包含了想要的结果。但是现在越来越多的网页都已经演变为 SPA 页面,其页面在浏览器中呈现的结果是经过 JavaScript 渲染得到的,如果我们使用 Scrapy 直接对其进行抓取的话,其结果和使用 requests 没有什么区别。那我们真的要使用 Scrapy 完成对 JavaScript 渲染页面的抓取应该怎么办呢?之前我们介绍了

2020-09-08 23:09:11

第07讲:入门首选,Requests 库的基本使用

上一课时我们了解了一些学习爬虫所需要的基本知识。从本课时开始,我们正式步入Python 爬虫的大门。学习爬虫,最基础的便是模拟浏览器向服务器发出请求,那么我们需要从什么地方做起呢?请求需要我们自己来构造吗?需要关心请求这个数据结构的实现吗?需要了解 HTTP、TCP、IP 层的网络传输通信吗?需要知道服务器的响应和应答原理吗?可能你无从下手,不过不用担心,Python 的强大之处就是提供了功能齐全的类库来帮助我们完成这些请求。利用 Python 现有的库我们可以非常方便地实现网络请求的模拟,常见的库有

2020-09-06 23:32:53

第48讲:分布式利器 Scrapy-Redis 原理

在上节课我们提到过,Scrapy-Redis 库已经为我们提供了 Scrapy 分布式的队列、调度器、去重等功能,其 GitHub 地址为: https://github.com/rmax/scrapy-redis。本节课我们深入掌握利用 Redis 实现 Scrapy 分布式的方法,并深入了解 Scrapy-Redis 的原理。获取源码可以把源码克隆下来,执行如下命令:git clone https://github.com/rmax/scrapy-redis.git核心源码在 scrapy-r

2020-08-30 18:59:20

第49讲:实战上手,Scrapy-Redis 分布式实现

在前面一节课我们了解了 Scrapy-Redis 的基本原理,本节课我们就结合之前的案例实现基于 Scrapy-Redis 的分布式爬虫吧。1.环境准备本节案例我们基于第 46 讲 —— Scrapy 和 Pyppeteer 的动态渲染页面的抓取案例来进行学习,我们需要把它改写成基于 Redis 的分布式爬虫。首先我们需要把代码下载下来,其 GitHub 地址为 https://github.com/Python3WebSpider/ScrapyPyppeteer,进入项目,试着运行代码确保可以顺利执

2020-08-30 18:59:03

第47讲:大幅提速,分布式爬虫理念

我们在前面几节课了解了 Scrapy 爬虫框架的用法。但这些框架都是在同一台主机上运行的,爬取效率比较低。如果能够实现多台主机协同爬取,那么爬取效率必然会成倍增长,这就是分布式爬虫的优势。接下来我们就来了解一下分布式爬虫的基本原理,以及 Scrapy 实现分布式爬虫的流程。我们在前面已经实现了 Scrapy 基本的爬虫功能,虽然爬虫是异步加多线程的,但是我们却只能在一台主机上运行,所以爬取效率还是有限的,而分布式爬虫则是将多台主机组合起来,共同完成一个爬取任务,这将大大提高爬取的效率。1.分布式爬虫架

2020-08-30 18:58:50

第08讲:解析无所不能的正则表达式

在上个课时中,我们学会了如何用 Requests 来获取网页的源代码,得到 HTML 代码。但我们如何从 HTML 代码中获取真正想要的数据呢?正则表达式就是一个有效的方法。本课时中,我们将学习正则表达式的相关用法。正则表达式是处理字符串的强大工具,它有自己特定的语法结构。有了它,我们就能实现字符串的检索、替换、匹配验证。当然,对于爬虫来说,有了它,要从 HTML 里提取想要的信息就非常方便了。实例引入说了这么多,可能我们对正则表达式的概念还是比较模糊,下面就用几个实例来看一下正则表达式的用法。

2020-08-20 15:35:01

第16讲:异步爬虫的原理和解析

我们知道爬虫是 IO 密集型任务,比如如果我们使用 requests 库来爬取某个站点的话,发出一个请求之后,程序必须要等待网站返回响应之后才能接着运行,而在等待响应的过程中,整个爬虫程序是一直在等待的,实际上没有做任何的事情。对于这种情况我们有没有优化方案呢?实例引入比如在这里我们看这么一个示例网站:https://static4.scrape.cuiqingcai.com/,如图所示。这个网站在内部实现返回响应的逻辑的时候特意加了 5 秒的延迟,也就是说如果我们用 requests 来爬取其中某

2020-08-20 11:45:46

第14讲:Selenium 的基本使用

上个课时我们讲解了 Ajax 的分析方法,利用 Ajax 接口我们可以非常方便地完成数据的爬取。只要我们能找到 Ajax 接口的规律,就可以通过某些参数构造出对应的的请求,数据自然就能被轻松爬取到。但是,在很多情况下,Ajax 请求的接口通常会包含加密的参数,如 token、sign 等,如:https://dynamic2.scrape.cuiqingcai.com/,它的 Ajax 接口是包含一个 token 参数的,如图所示。由于接口的请求加上了 token 参数,如果不深入分析并找到 toke

2020-08-18 13:55:30

第13讲:Ajax 爬取案例实战

上一课时我们学习了 Ajax 的基本原理和分析方法,这一课时我们结合实际案例,学习 Ajax 分析和爬取页面的具体实现。准备工作在开始学习之前,我们需要做好如下的准备工作:安装好 Python 3(最低为 3.6 版本),并能成功运行 Python 3 程序。了解 Python HTTP 请求库 requests 的基本用法。了解 Ajax 的基础知识和分析 Ajax 的基本方法。以上内容在前面的课时中均有讲解,如你尚未准备好建议先熟悉一下这些内容。爬取目标本课时我们以一个动态渲染网站为

2020-08-17 17:16:24

第12讲:Ajax 的原理和解析

当我们在用 requests 抓取页面的时候,得到的结果可能会和在浏览器中看到的不一样:在浏览器中正常显示的页面数据,使用 requests 却没有得到结果。这是因为 requests 获取的都是原始 HTML 文档,而浏览器中的页面则是经过 JavaScript 数据处理后生成的结果。这些数据的来源有多种,可能是通过 Ajax 加载的,可能是包含在 HTML 文档中的,也可能是经过 JavaScript 和特定算法计算后生成的。对于第 1 种情况,数据加载是一种异步加载方式,原始页面不会包含某些数据,只

2020-08-17 16:10:42

第45讲:哪都能存,Item Pipeline 的用法

在前面的示例中我们已经了解了 Item Pipeline 项目管道的基本概念,本节课我们就深入详细讲解它的用法。首先我们看看 Item Pipeline 在 Scrapy 中的架构,如图所示。图中的最左侧即为 Item Pipeline,它的调用发生在 Spider 产生 Item 之后。当 Spider 解析完 Response 之后,Item 就会传递到 Item Pipeline,被定义的 Item Pipeline 组件会顺次调用,完成一连串的处理过程,比如数据清洗、存储等。它的主要功能有:

2020-08-17 15:50:18

第44讲:功能强大的 Middleware 的用法

我们在 Scrapy 架构中,可以看到有一个叫作 Middleware 的概念,中文翻译过来就叫作中间件,在 Scrapy 中有两种 Middleware,一种是 Spider Middleware,另一种是 Downloader Middleware,本节课我们分别来介绍下。Spider Middleware 的用法Spider Middleware 是介入 Scrapy 的 Spider 处理机制的钩子框架。当 Downloader 生成 Response 之后,Response 会被发送给 Sp

2020-08-17 12:23:56

第43讲:灵活好用的 Spider 的用法

在上一节课我们通过实例了解了 Scrapy 的基本使用方法,在这个过程中,我们用到了 Spider 来编写爬虫逻辑,同时用到了一些选择器来对结果进行选择。在这一节课,我们就对 Spider 和 Selector 的基本用法作一个总结。Spider 的用法在 Scrapy 中,要抓取网站的链接配置、抓取逻辑、解析逻辑等其实都是在 Spider 中配置的。在前一节课的实例中,我们发现抓取逻辑也是在 Spider 中完成的。本节课我们就来专门了解一下 Spider 的基本用法。Spider 运行流程在实

2020-08-13 11:04:56

第42讲:初窥门路 Scrapy 的基本使用

接下来介绍一个简单的项目,完成一遍 Scrapy 抓取流程。通过这个过程,我们可以对 Scrapy 的基本用法和原理有大体了解。本节目标本节要完成的任务如下。创建一个 Scrapy 项目。创建一个 Spider 来抓取站点和处理数据。通过命令行将抓取的内容导出。将抓取的内容保存到 MongoDB 数据库。本节抓取的目标站点为 http://quotes.toscrape.com/。准备工作我们需要安装好 Scrapy 框架、MongoDB 和 PyMongo 库。如果尚未安装,请参照之

2020-08-11 15:45:18

第41讲:无人不知的 Scrapy 爬虫框架的介绍

在前面编写爬虫的时候,如果我们使用 requests、aiohttp 等库,需要从头至尾把爬虫完整地实现一遍,比如说异常处理、爬取调度等,如果写的多了,的确会比较麻烦。那么有没有什么办法可以提升我们编写爬虫的效率呢?当然是有的,那就是利用现有的爬虫框架。说到 Python 的爬虫框架,Scrapy 当之无愧是最流行最强大的框架了。本节我们就来初步认识一下 Scrapy,后面的课时我们会对 Scrapy 的功能模块进行详细介绍。Scrapy 介绍Scrapy 是一个基于 Twisted 的异步处理框架

2020-08-11 14:39:12

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 精彩红人
    精彩红人
    发布高质量Blink获得高赞和评论,进入精彩栏目即可获得
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。