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

Python Selenium爬虫仅输出单条JSON数据,求排查循环问题

问题分析与修复方案

你的脚本确实存在循环逻辑疏漏,导致最终仅输出一条数据,具体问题和修复方法如下:

核心问题

  1. 数据存储结构错误:你使用data={}字典存储结果,每次循环都会覆盖之前的内容,最终只会保留最后一次循环的数据。
  2. 循环逻辑分离:分开遍历链接和标题的方式会导致post变量仅保留最后一个链接,后续标题循环里始终用这个最后链接和当前标题生成字典,自然只能得到一条结果。

修复后的代码

from selenium import webdriver
from selenium.webdriver.common.by import By
import json

browser = webdriver.Firefox()
browser.get('https://www.hoyolab.com/circles/2/27/official?page_type=27&page_sort=events')

# 改用列表存储所有文章数据,避免覆盖
data_list = []

block = browser.find_element(By.CLASS_NAME, "mhy-article-list__body")
all_links = block.find_elements(By.TAG_NAME,"a")
all_title = block.find_elements(By.TAG_NAME, 'h3')

# 同时遍历链接和标题,确保数据一一对应
for post_link, post_title in zip(all_links, all_title):
    href = post_link.get_attribute('href')
    title = post_title.get_attribute('title')
    # 将单条文章数据添加到列表中
    data_list.append({
        'post': href,
        'title': title
    })

with open('result.json', 'w', encoding='utf-8') as file:
    json.dump(data_list, file, indent=4, ensure_ascii=False)

browser.quit()

额外优化提示

  • 可以引入WebDriverWait显式等待,避免页面未加载完成就查找元素,导致漏爬内容。
  • 提前检查all_links和all_title的长度是否一致,防止页面结构变化导致数据错位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 04:43:27