iT邦幫忙

2025 iThome 鐵人賽

DAY 6
0
AI & Data

30 天打造 App 評論洞察系統:用 AI 讓產品團隊更懂用戶系列 第 6

【Day 5】App 評論爬蟲設計與實作(2/5)

  • 分享至 

  • xImage
  •  

前言

在上一篇文章中,我們已經記錄了「PChome 24h購物」的 App ID。本篇將聚焦在 App Store 的評論資料爬取

由於 Apple App Store 的資料抓取不像 Google Play 那麼直覺,這部分會稍微複雜一些。過去社群曾經提供過 app-store-scraper 這類套件,但目前實測已經無法使用。因此,本篇採用 iTunes RSS Feed 的方式來獲取評論資料。


iTunes RSS Feed

目標網址格式如下:https://itunes.apple.com/{country}/rss/customerreviews/page={page}/id={appid}/sortBy=mostRecent/json

  • {country}:代表國家代碼,例如 tw 代表台灣。
  • {page}:評論的頁數,每頁大約 50 筆評論。
  • {appid}:應用程式的 ID,例如 452668231(PChome 24h購物)。

範例網址:
👉 https://itunes.apple.com/tw/rss/customerreviews/page=1/id=452668231/sortBy=mostRecent/json
https://ithelp.ithome.com.tw/upload/images/20250826/20169646A1SWclJt4g.png

⚠️ 限制提醒:此方式最多僅能爬取 10 頁評論(約 500 筆)。若將 page=11,伺服器只會回傳最多第 10 頁的資料。
https://ithelp.ithome.com.tw/upload/images/20250826/20169646TXuu2OaKWp.png


程式碼實作

接下來,我們先匯入必要套件,並設定 App ID、國家代碼與存放評論的空 list

import pandas as pd
import numpy as np
import requests
import json
from google_play_scraper import app, reviews_all
import re
import emoji
import os
from datetime import datetime
import pytz

# App Store 應用程式設定
appid = 452668231
country = "tw"
reviews = []

# 逐頁爬取 (最多 10 頁)
for i in range(1, 11):
    url = f"https://itunes.apple.com/{country}/rss/customerreviews/page={i}/id={appid}/sortBy=mostRecent/json"
    response = requests.get(url)

data = response.json()
data

下方為爬出後的結果,可以觀察其 JSON 格式,裡面有些欄位是我們想要爬取的資料,但包含在 label 裡面。
https://ithelp.ithome.com.tw/upload/images/20250826/20169646ttjZjo5GTW.png

由於原始 JSON 的層級結構較深(例如 entry['title']['label']),我們需要將有用的 label 值抽取出來,存放到結構化的 list 中,方便後續轉換成 DataFrame 進行分析。

import pandas as pd
import numpy as np
import requests
import json
from google_play_scraper import app, reviews_all
import re
import emoji
import os
from datetime import datetime
import pytz

# App Store 應用程式設定
appid = 452668231   # PChome 24h購物
country = "tw"      # 台灣
reviews = []        # 存放評論的 list

# 逐頁爬取 (最多 10 頁)
for i in range(1, 11):
    url = f"https://itunes.apple.com/{country}/rss/customerreviews/page={i}/id={appid}/sortBy=mostRecent/json"
    response = requests.get(url)

    if response.status_code == 200:
        data = response.json()

        # 確保資料中有 feed 與 entry
        if 'feed' in data and 'entry' in data['feed']:
            for entry in data['feed']['entry']:
                review = {
                    'id': entry['id']['label'],                  # 評論 ID
                    'rating': entry['im:rating']['label'],       # 星等
                    'title': entry['title']['label'],            # 標題
                    'content': entry['content']['label'],        # 內容
                    'date': entry['updated']['label'],           # 日期
                    'appVersion': entry['im:version']['label']   # App 版本
                }
                reviews.append(review)
    else:
        print(f"⚠️ 第 {i} 頁評論抓取失敗,狀態碼:{response.status_code}")

reviews

爬取結果

當程式執行後,reviews 這個 list 就會存放我們所需的評論資料。以下是部分 JSON 結構對應到的欄位:
https://ithelp.ithome.com.tw/upload/images/20250826/20169646LvYjHvyc7E.png
https://ithelp.ithome.com.tw/upload/images/20250826/20169646qEjXm6bUA4.png


將評論轉換為 DataFrame 格式

當我們完成評論爬取後,所有的評論都被存放在 reviews 這個 list 之中。由於每一筆評論已經是 dictionary 的形式,因此只需要使用 pandas.DataFrame 就能快速轉換為表格格式,方便後續進行清理與分析。

# 將評論 list 轉換成 DataFrame
df_app_store = pd.DataFrame(reviews)

# 檢視全部資料
df_app_store

結語

到這裡,我們已經能夠透過 iTunes RSS Feed 成功抓取 App Store 的評論資料。雖然有 最多 10 頁的限制,但已經足以簡單應用在一般的情感分析、關鍵字分析或版本迭代追蹤上。

在下一篇文章中,我將示範如何爬取 Google Play 評論的資料 ✨


上一篇
【Day 4】App 評論爬蟲設計與實作(1/5)
下一篇
【Day 6】App 評論爬蟲設計與實作(3/5)
系列文
30 天打造 App 評論洞察系統:用 AI 讓產品團隊更懂用戶14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言