首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Scrapy 爬取分析酷安网 6000 款App

不过还是要再说几句。

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 网络爬虫系统进阶正在编写,有兴趣的小伙伴关注和推荐给小伙伴哦!是免费的哦!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190920A05BSE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券