抓取 steam 游戏平台所有游戏数据

2017-07-12

抓取 steam 游戏平台所有游戏数据

利用 scrapy 抓取 steam 游戏平台所有上线发布的游戏信息,并存入数据库。 包括游戏名称、分类、发布时间、评论数、价格、metacritic 评分、开发商、发行商等信息。

项目说明

在 2016-10-12 日时创建了一篇日记: 学习 Python 爬虫终极目的,爬取 Steam 游戏平台的数据,并分析哪类游戏最受玩家欢迎等信息。
到 2017-3-6 日终于完成了抓取 steam 游戏平台的数据部分代码。并且完成了抓取。以下是项目在抓取阶段遇到的一些问题和项目说明。

抓取流程

  1. 将 steam 所有游戏 按照发布时间逆序排序,共能够看到截止 2017-3-6 steam 上共有 24483 个游戏。
  2. 提取所有游戏的链接、名称、所在页数、是否已经抓取状态存入数据库。
  3. 请求第二步中得到的游戏的 url,获取响应后的页面,然后提取游戏的相关信息。
  4. 并且更新游戏抓取状态

抓取过程中遇到的问题

关于 steam 游戏 id

steam 的 url 一般为 http://store.steampowered.com/app/620/ 这是 Portal 2 游戏的链接。所以在开始的时候以为每一个游戏都有一个对应的 id。例如 Portal 2 就是 620 。但在实际抓取中总发现,抓取到的 url 数量总是比 24483 少两百多个。经过仔细研究对比终于找到原因。

有一些游戏在初期会发布免费的 demo 试玩版,收集用户数据,然后对游戏进行更改。游戏正式上线后,之前的 demo 版就可能失效了,或者直接跳转到正式版的链接。这就变成了一个游戏,只存在了同一个 id。但是在所有游戏排行中,却显示为两个游戏。所以会出现抓取到的数量会比实际显示数量少两百多的情况。折腾了许久,以此记录。

数据分析 TODO...

现在先抓取完 steam 的 所有游戏数据,当开始学习数据分析或者有更好的想法时,会对 steam 的游戏数据进行分析。目前还没有分析的数据包括 * steam 游戏数据 unity AssetStore 商店数据*

源码

完整源码请戳 github

期待能够做的更好