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

改写Selenium旧脚本提取GitHub闭源Issue链接遇AttributeError求助

问题分析与解决

错误原因

你代码里的driver.find_elements(By.XPATH, '//div[@aria-label="Issues"]')返回的是元素列表,而列表对象没有find_element方法,这就是触发AttributeError的直接原因。

修正方案

首先,GitHub页面上只有一个符合//div[@aria-label="Issues"]的元素,所以应该用find_element(单数)定位这个父容器,而非find_elements(复数)。其次,要准确抓取已关闭Issue的链接,需要先切换到"Closed"标签页,再定位对应列表里的Issue标题链接。

修正后的代码示例:

# 定位Issues区域的父容器
issues_container = driver.find_element(By.XPATH, '//div[@aria-label="Issues"]')

# 点击"Closed"标签,切换到已关闭Issue页面
closed_tab = issues_container.find_element(By.LINK_TEXT, 'Closed')
closed_tab.click()

# 等待页面加载完成(新手必须加等待,避免元素未加载就抓取)
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, 'js-issue-row')))

# 抓取所有已关闭Issue的链接
repo_closed_url = [link.get_attribute('href') for link in issues_container.find_elements(By.XPATH, './/h4[@class="h4"]/a')]

额外提示

  • 务必学会使用显式等待(如上述WebDriverWait),避免因页面加载慢导致元素找不到的问题。
  • 定位子元素时,用相对路径(开头加.,比如.//h4)表示在父元素范围内查找,而非整个页面,定位更精准。
  • 若不想手动切换标签,也可直接构造已关闭Issue的URL(格式为https://github.com/用户名/仓库名/issues?q=is%3Aissue+is%3Aclosed),直接访问后抓取链接,效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:46:01