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

使用Beautiful Soup爬取Steam首页封面返回trans.gif空文件问题排查

问题根因

Steam 商店页面使用了图片懒加载机制,游戏封面的真实地址不会直接放在img标签的src属性中,初始加载阶段src统一填充的是 1x1 尺寸的透明占位图trans.gif,真实的封面链接存储在img标签的自定义属性(通常为data-src,部分区域版本页面可能为data-srcset)中。

另外你的代码还有两处隐性问题:

  • page_soup.findAll返回的是列表,直接用append会把整个查询结果列表作为单个元素插入container,后续遍历到该元素时会触发属性读取报错,应该改用extend方法合并列表
  • 遍历container时无需单独维护count索引,直接遍历拿到的item对象即可,避免索引错位导致的取值错误
代码修改方案
  1. 先输出cover.img的所有属性,确认你爬取的页面版本中存储真实封面地址的属性名:
print(cover.img.attrs)
  1. 把原代码中读取src的逻辑替换为读取对应自定义属性,同时修正上述隐性问题。
修正后的参考代码
page_soup = soup(page_html, 'html.parser')
container = page_soup.findAll('a', {'class':'tab_item'})
# 把append改为extend合并列表
container.extend(page_soup.findAll('a', {'class':'tab_item.app_impression_tracked'}))

for item in container:
    price = item.find('div','tab_item_discount')
    title = item.find('div','tab_item_content')
    cover = item.find('div', 'tab_item_cap')
    tags = title.find('div', 'tab_item_top_tags')
    print("price: " + price['data-price-final'])
    print("Title: " + title.div.text)
    # 替换为真实存储封面地址的属性,这里以常见的data-src为例,加fallback逻辑避免属性不存在报错
    print("Cover: " + cover.img.get('data-src', cover.img['src']))
    print("Tags: " + tags.text)

内容的提问来源于stack exchange,提问作者Maria Shanahan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:36:03