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

如何将Beautiful Soup查询结果存入数组并解决仅存单个元素问题

问题原因

你将urls = []数组初始化语句放在了循环内部的条件判断中,每次匹配到符合要求的链接时,都会先清空整个数组再添加新元素,最终数组中只会保留最后一次匹配到的内容。

修正代码

将数组初始化移到循环外即可,还可以用集合存储直接实现自动去重,省去后续单独处理去重的步骤:

match2 = soup.find_all("a", href=True, target="_blank")
# 初始化放在循环外部,用集合存储可自动去重,需要转列表直接用list(urls)即可
urls = set()
# 循环变量不要和原查询结果变量同名,避免覆盖原有查询结果
for item in match2:
    # 用startswith判断更安全,避免href为空时索引越界报错
    if item['href'].startswith('.'):
        url_parts = url.split("/")
        href_parts = item['href'].split("/")
        imageUrl = f"{url_parts[2]}/{url_parts[3]}/src/{href_parts[-1]}"
        urls.add(imageUrl)
print("array")
for i in urls:
   print(i)

额外优化说明

  • 避免循环变量和原查询结果变量重名,防止后续需要复用查询结果时出现异常
  • 用startswith('.')替代直接取下标判断,规避href为空时的索引越界风险
  • 提前将url拆分结果存入变量,避免重复执行split操作提升运行效率
  • 用集合存储数据天然支持去重,不需要额外编写去重逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:54:01