不过还是要再说几句。
1. Scrapy介绍
相对于 Pyspider ,Scrapy 框架要复杂一些,有不同的处理模块,项目文件也由好几个程序组成,不同的爬虫模块需要放在不同的程序中去,所以刚开始入门会觉得程序七零八散,容易把人搞晕,先大概了解一下 Scrapy 的架构和代码编写方式
Scrapy 框架的架构,如下图所示:
它可以分为如下的几个部分。
Engine。引擎,处理整个系统的数据流处理、触发事务,是整个框架的核心。
Item。项目,它定义了爬取结果的数据结构,爬取的数据会被赋值成该Item对象。
Scheduler。调度器,接受引擎发过来的请求并将其加入队列中,在引擎再次请求的时候将请求提供给引擎。
Downloader。下载器,下载网页内容,并将网页内容返回给蜘蛛。
Spiders。蜘蛛,其内定义了爬取的逻辑和网页的解析规则,它主要负责解析响应并生成提取结果和新的请求。
Item Pipeline。项目管道,负责处理由蜘蛛从网页中抽取的项目,它的主要任务是清洗、验证和存储数据。
Downloader Middlewares。下载器中间件,位于引擎和下载器之间的钩子框架,主要处理引擎与下载器之间的请求及响应。
Spider Middlewares。蜘蛛中间件,位于引擎和蜘蛛之间的钩子框架,主要处理蜘蛛输入的响应和输出的结果及新的请求。
项目文件结构如下:
最重要的文件是下面这几个:
spiders.py:这是项目主程序文件,汇总各功能函数。
items.py:爬虫要抓取的字段参数都预先在这里定义。
pipelines.py:放置数据处理相关代码,比如存储到数据库中。
settings.py:定义项目的全局配置。
middlewares.py:定义爬取过程中的中间件功能实现,比如设置代理 IP 随机 UserAgent 等功能模块。
经过上面的介绍,你可能还是不太明白 Scarpy 怎么使用,下面我们就来实战, 抓取酷安网页端 6000 App 信息。
2. 目标网站
https://www.coolapk.com/
观察目标网站可以发现两点有用信息:
每页显示了 10 条 App 信息,一共有 303 页,也就是 3030 个左右的 App 。
网页请求是 GET 形式,URL 只有一个页数递增参数,构造翻页简单。
接下来看看选择抓取哪些信息,可以看到,主页面内显示了 App 名称、下载量、评分等信息,我们再点击 App 图标进入详情页,可以看到提供了更齐全的信息,包括:分类标签、评分人数、关注人数等。由于,我们后续需要对 App 进行分类筛选,故分类标签很有用,所以这里我们选择进入每个 App 主页抓取所需信息指标。
通过上述分析,我们就可以确定抓取流程了,首先遍历主页面 ,抓取 10 个 App 的详情页 URL,然后详情页再抓取每个 App 的指标,如此遍历下来,我们需要抓取 6000 个左右网页内容,抓取工作量不算小,所以,我们接下来尝试使用 Scrapy 框架进行抓取。
3.开始
首先安装好 Scrapy 框架,如果是 Windwos 系统,且已经安装了 Anaconda,那么安装 Scrapy 框架就非常简单,只需打开 Anaconda Prompt 命令窗口,输入下面一句命令即可,会自动帮我们安装好 Scrapy 所有需要安装和依赖的库。
如果你是Windows普通的,命令行:
3.1. 创建项目
接着,我们需要创建一个爬虫项目,所以我们先从根目录切换到需要放置项目的工作路径,比如我这里设置的存放路径为:E:\my_Python\training\kuan,接着继续输入下面一行代码即可创建 kuan 爬虫项目:
执行上面的命令后,就会生成一个名为 kuan 的 scrapy 爬虫项目,包含以下几个文件:
下面,我们需要再 spiders 文件夹中创建一个爬取主程序:kuan.py,接着运行下面两行命令即可:
此篇主要讲部分准备工作,下一篇:实际代码编写。
预告:Python 网络爬虫系统进阶正在编写,有兴趣的小伙伴关注和推荐给小伙伴哦!是免费的哦!
领取专属 10元无门槛券
私享最新 技术干货