如何用Python爬取苹果App Store需点击按钮加载的应用版本历史数据
苹果App Store应用版本历史爬取方案
你已经安装了火狐版Selenium,直接通过模拟点击交互即可拿到数据,具体步骤如下:
- 先导入Selenium相关依赖
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC
- 初始化驱动并访问目标页面,加等待逻辑避免元素未加载报错
# 初始化Firefox驱动 driver = webdriver.Firefox() # 访问Netflix应用页面 driver.get("https://apps.apple.com/us/app/netflix/id363590051") # 全局隐式等待3秒,也可以根据自己的网络情况调整 driver.implicitly_wait(3)
- 定位Version History按钮,不要使用页面上的动态id(ember开头的id是Ember框架自动生成的,每次访问都会变化,定位会失效),推荐用文本匹配定位
# 等待按钮可点击后再定位 version_btn = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.XPATH, '//button[text()="Version History"]')) )
- 模拟点击按钮,等待弹窗内容加载完成后提取数据
# 点击按钮触发弹窗加载 version_btn.click() # 等待弹窗容器加载出内容 modal_container = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, 'modal-container')) ) # 直接获取弹窗内的HTML代码自行解析,也可以直接在container下定位版本、更新时间、更新说明等字段 version_history_html = modal_container.get_attribute('innerHTML') # 处理完后关闭驱动 driver.quit()
如果需要更高性能的爬取,可以直接抓请求接口:点击按钮时打开浏览器控制台的网络面板,筛选XHR类型的请求,就能找到苹果官方返回版本历史数据的接口,直接用requests库调用该接口即可,返回的是结构化的JSON数据,不需要启动浏览器,爬取效率更高。
内容的提问来源于stack exchange,提问作者zurich_ruby
相关产品推荐
相关产品推荐

