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

如何在Selenium中提取保存链接?新手遇TimeoutException求助

问题排查与解决方案

代码错误原因及修正

你的代码触发TimeoutException的核心问题是定位器用错了:

  • 你写的By. LINK_TEXT不仅多了个空格(语法问题),更关键的是LINK_TEXT是用来匹配链接的显示文本内容,而非HTML标签名。你传入"a",相当于找所有显示文本是"a"的链接,这显然不是你要的提取所有<a>标签的需求。
  • 要定位页面所有<a>标签,应该用By.TAG_NAME定位器。

另外,推荐用ChromeDriverManager自动管理Chrome驱动,避免Ubuntu上驱动版本不兼容的问题。修正后的完整代码如下:

import selenium
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


url = "https://www.python.org"

# 自动安装匹配当前Chrome版本的驱动
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get(url)
driver.minimize_window()

# 等待所有<a>标签加载可见
links = WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.TAG_NAME, "a")))


for link in links:
    href = link.get_attribute("href")
    if href is not None:
        print(href)

driver.quit()

保存链接的两种实用方法

1. 保存到列表,直接后续访问

如果只是临时在代码里复用链接,可以把它们存到Python列表中,之后直接遍历列表访问:

# 先收集链接到列表
saved_links = []
for link in links:
    href = link.get_attribute("href")
    if href is not None:
        saved_links.append(href)
        print(href)

# 后续批量访问示例
for url in saved_links:
    driver.get(url)
    # 可根据需求添加等待、元素操作等逻辑

2. 保存到本地文件,长期复用

如果需要长期保存链接,推荐写入本地文本文件,之后随时读取使用:

# 写入到txt文件
with open("python_org_links.txt", "w", encoding="utf-8") as f:
    for link in links:
        href = link.get_attribute("href")
        if href is not None:
            f.write(href + "\n")

# 读取文件并访问的示例
with open("python_org_links.txt", "r", encoding="utf-8") as f:
    for url in f.readlines():
        url = url.strip()  # 去除换行符和空格
        if url:
            driver.get(url)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 08:33:20