Python Selenium爬虫仅输出单条JSON数据,求排查循环问题
问题分析与修复方案
你的脚本确实存在循环逻辑疏漏,导致最终仅输出一条数据,具体问题和修复方法如下:
核心问题
- 数据存储结构错误:你使用
data={}字典存储结果,每次循环都会覆盖之前的内容,最终只会保留最后一次循环的数据。 - 循环逻辑分离:分开遍历链接和标题的方式会导致
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
相关产品推荐
相关产品推荐

