You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

爬取App Store返回无关图片:是Bug还是苹果反爬安全机制?

问题分析与解决方案

核心结论:脚本逻辑局限性导致,而非苹果反爬机制

你遇到的无关图片问题,本质是页面元素匹配逻辑不够精准,和苹果的反爬安全机制无关,具体原因和优化方案如下:

1. 问题根源

  • 你依赖固定class we-screenshot-viewer__screenshots-list 定位截图列表,但App Store页面结构会因App类型(比如带地图联动的游戏)、加载状态出现变体,该列表下可能混入非游戏玩法的辅助展示图(如地图预览)。
  • 脚本仅提取目标class下所有picture标签的图片,未做内容或属性过滤,导致无关图片被纳入结果。
  • 苹果反爬的典型表现是返回错误状态码、验证码页面或IP封禁,你能正常获取图片(只是无关),不符合反爬特征。

2. 优化方案

方案1:通过属性精准筛选截图元素

App Store的游戏截图picture标签通常带有data-test-screenshot属性,用这个属性替代单纯的标签匹配,能大幅提升准确性:

# 替换原有的find_all('picture')逻辑
for subHtml in link.find_all('picture', attrs={"data-test-screenshot": True}):
    image_sources = subHtml.find_all('source')[-1].get('srcset')
    start = image_sources.rindex(", ")
    end = image_sources.rindex(" ")
    images.append(image_sources[start+2:end])

方案2:添加URL内容过滤

游戏截图的URL通常包含特定分辨率标识(如512x512、640x1136),可通过关键词过滤排除无关图片:

# 提取图片后添加过滤步骤
filtered_images = []
for img_url in images:
    # 保留含常见游戏截图分辨率的URL,排除带map关键词的地图类图片
    if ("512x512" in img_url or "640x1136" in img_url) and "map" not in img_url.lower():
        filtered_images.append(img_url)
images = filtered_images

方案3:优化异常处理逻辑

原脚本遇到异常直接返回None,会丢失有效数据,建议调整为容错处理:

# 截图提取的异常处理优化
try:
    images = []
    if link:
        for subHtml in link.find_all('picture', attrs={"data-test-screenshot": True}):
            image_sources = subHtml.find_all('source')[-1].get('srcset')
            start = image_sources.rindex(", ")
            end = image_sources.rindex(" ")
            images.append(image_sources[start+2:end])
except Exception as e:
    print(f"截图提取失败: {str(e)}")

# 图标提取同理,避免直接返回None
try:
    image_icon = None
    if link_icon:
        image_icon_sources = link_icon.find_all('source')[-1].get('srcset')
        start = image_icon_sources.rindex(", ")
        end = image_icon_sources.rindex(" ")
        image_icon = image_icon_sources[start+2:end]
except Exception as e:
    print(f"图标提取失败: {str(e)}")

内容的提问来源于stack exchange,提问作者Harun Sasmaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 12:24:19