当前位置:首页 > 热点

实战Scrapy,手把手教你爬取Steam热门游戏数据

susu2026-07-26 20:49:32热点109
本文是一篇Scrapy框架的实战教程,详细讲解如何手把手爬取Steam热门游戏数据,内容涵盖环境搭建、项目创建、Items定义、Spider编写及数据存储等核心环节,通过具体代码示例,帮助初学者掌握Scrapy工作流程,高效提取游戏名称、价格及评价等关键信息,是学习Python网络爬虫的优质实践指南。

在当今的游戏世界中,Steam 无疑是最大的数字发行平台之一,对于游戏开发者、数据分析师或者仅仅是狂热的游戏玩家来说,Steam 上庞大的游戏数据库是一个巨大的信息金矿,无论是想分析游戏价格趋势,还是想研究玩家评价机制,获取这些数据的第一步就是“爬虫”。

本文将介绍如何使用 Python 强大的爬虫框架 Scrapy,高效、合规地抓取 Steam 商店页面的游戏数据。

实战Scrapy,手把手教你爬取Steam热门游戏数据

为什么选择 Scrapy?

虽然 requests + BeautifulSoup 是入门爬虫的经典组合,但在面对像 Steam 这样数据量大、结构复杂的网站时,Scrapy 的优势显而易见:

  1. 异步处理:Scrapy 基于 Twisted 异步网络框架,抓取速度极快。
  2. 内置功能:自动处理重试、Cookies、Session 和并发控制。
  3. 数据管道:方便地将清洗后的数据保存为 JSON、CSV 或存入数据库。

准备工作

在开始之前,请确保你已经安装了 Python 环境,并通过 pip 安装 Scrapy:

pip install scrapy

分析 Steam 页面结构

我们要抓取的目标是 Steam 的搜索结果页面(动作类游戏列表)。

  1. 打开浏览器开发者工具(F12)。
  2. 观察 Steam 的搜索结果列表,你会发现每个游戏通常包裹在一个特定的 div 标签中(div.search_result_row)。
  3. 我们需要提取的关键信息包括:
    • 游戏名称:通常在标题标签中。
    • 发布日期:在 div.search_released 中。
    • 价格:在 div.search_price 中。
    • 评价简述:在 span.search_review_summary 中。

注意:Steam 的页面结构可能会随时间更新,编写代码时请以实际 HTML 结构为准。

编写 Scrapy Spider

创建一个新的 Scrapy 项目:

scrapy startproject steam_spider
cd steam_spider
scrapy genspider steam_store store.steampowered.com

打开生成的 steam_store.py 文件,我们来编写核心逻辑,以下是一个简化的示例代码:

import scrapy
from steam_spider.items import SteamSpiderItem
class SteamStoreSpider(scrapy.Spider):
    name = "steam_store"
    # Steam 的搜索 URL,这里以 'action' 类游戏为例,支持翻页
    start_urls = [
        'https://store.steampowered.com/search/?term=&category1=998&start=0&count=50'
    ]
    def parse(self, response):
        # 遍历每一个游戏块
        for game in response.css('div.search_result_row'):
            item = SteamSpiderItem()
            # 提取数据
            item['title'] = game.css('span.title::text').get()
            item['url'] = game.css('a::attr(href)').get()
            item['release_date'] = game.css('div.search_released::text').get().strip()
            # 价格处理(Steam 价格格式较复杂,需清洗)
            price_str = game.css('div.search_price::text').getall()
            item['price'] = "".join(price_str).strip()
            # 提取评价
            item['review_summary'] = game.css('span.search_review_summary::attr(data-tooltip-html)').get()
            yield item
        # 处理翻页逻辑
        # 查找“下一页”的链接
        next_page = response.css('a.pagebtn::attr(href)').getall()
        # Steam 翻页逻辑较特殊,通常通过构造 URL 或查找特定的 'Next' 按钮
        # 这里简化处理:如果存在下一页链接则继续
        if next_page:
            # 简单的逻辑判断,实际需更严谨
            yield response.follow(next_page[-1], callback=self.parse)

设置与反爬策略

Steam 对爬虫比较敏感,如果直接运行,很容易遇到 429 Too Many Requests 或被直接重定向到错误页面,我们需要在 settings.py 中进行配置:

  1. 添加 User-Agent:伪装成浏览器。

    USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
  2. 设置下载延迟:这是最重要的,不要给服务器造成压力。

    DOWNLOAD_DELAY = 2  # 每次请求间隔 2 秒
  3. 禁用 Cookies(可选):有些情况下禁用 Cookies 可以减少被追踪的概率,但在 Steam 上可能需要保持 Session 以维持某些状态,视情况而定。

    COOKIES_ENABLED = False
  4. 遵守 Robots.txt

    ROBOTSTXT_OBEY = True

运行与保存数据

代码编写完成后,我们可以运行爬虫并将数据保存为 JSON 文件:

scrapy crawl steam_store -o games.json

通过 Scrapy,我们可以轻松地构建一个能够自动追踪 Steam 游戏信息的系统,但在享受数据带来的便利时,请务必遵守 Robots 协议 和相关的法律法规,合理的抓取频率和对服务器的尊重是每一个开发者应有的素养。

获取数据只是第一步,你可以利用 Pandas 对这些数据进行清洗,甚至制作一个属于自己的游戏推荐或价格监控网站,快去试试吧!

标签: ScrapySteam
分享给朋友:

“实战Scrapy,手把手教你爬取Steam热门游戏数据” 的相关文章

辽宁电视台北方频道在线直播观看指南

辽宁电视台北方频道在线直播观看指南

本文提供了辽宁电视台北方频道的在线直播观看指南,旨在让观众随时随地通过网络平台尽享家乡精彩,通过详细的指引,用户可以轻松接入辽宁电视台北方频道在线直播,打破地域与时间限制,实时收看电视节目,不错过任何精彩瞬间,体验便捷的视听服务。…

王治郅妻子周蕾怀孕喜讯曝光,昔日男篮大哥喜迎二胎

王治郅妻子周蕾怀孕喜讯曝光,昔日男篮大哥喜迎二胎

昔日男篮名将王治郅的妻子周蕾被曝怀孕,两人即将迎来二胎宝宝,这一喜讯曝光后,引发了广泛关注,作为曾经的男篮大哥,王治郅如今家庭生活幸福美满,二胎的到来更是锦上添花,网友们纷纷送上祝福,同时也对这一幸福美满的家庭表示羡慕,期待新生命的降临。…

广东体育手机版在线直播观赛指南,随时随地畅享赛事激情

广东体育手机版在线直播观赛指南,随时随地畅享赛事激情

本文旨在提供广东体育手机版在线直播的观赛指南,用户通过手机即可随时随地接入平台,观看高清的在线直播视频,该指南详细介绍了如何利用移动端畅享各类精彩赛事,让体育爱好者不再受时空限制,能够轻松捕捉每一个激动人心的比赛瞬间,全方位体验赛事激情。…

致敬永远的曼巴,2020全明星赛全场录像回放

致敬永远的曼巴,2020全明星赛全场录像回放

本文提供了2020年NBA全明星赛的全场录像回放,旨在带领球迷重温这一经典赛事,这届比赛具有特殊的纪念意义,全场都在致敬刚刚离世的科比·布莱恩特,通过观看录像,观众不仅能再次感受当时的比赛氛围,更能以此缅怀这位传奇巨星,表达对永远的曼巴的深切怀念与崇高敬意。…

6月21日世界杯赛程回顾,巅峰对决与经典冷门夜

6月21日世界杯赛程回顾,巅峰对决与经典冷门夜

本文回顾了世界杯历史上6月21日的经典战役,重点讲述了这一天的巅峰对决与冷门之夜,通过展示当日的赛程表,文章带领读者重温了那些激动人心的足球时刻,既见证了顶级球队的强强对话,也记录了赛场上的意外惊喜,展现了足球运动的独特魅力。…

豪赌还是崩盘?深度解析湖人奇才改变联盟格局的大交易

豪赌还是崩盘?深度解析湖人奇才改变联盟格局的大交易

本文深度解析了湖人与奇才之间那笔引发热议的大交易,文章详细梳理了交易的具体细节,分析了湖人队此举究竟是冲击总冠军的豪赌,还是会导致球队未来崩盘的险棋,文章探讨了这笔交易如何改变联盟现有的竞争格局,以及对双方球队未来发展的深远影响。…