Selenium Python新手问询:如何从外部文件读网址逐个打开并替换URL与截图名?
最简单的Selenium Python实现方案:从外部文件读取并处理网址+截图
嘿,作为Selenium新手能想到用外部文件管理网址和配置,这个思路超赞!我给你整个最容易上手的实现方案,步骤清晰,代码注释拉满,包你能快速跑通~
第一步:准备外部配置文件
先创建一个文本文件(比如命名为urls_config.txt),用来存你要处理的网址、要替换的URL内容,以及截图文件名。每行用逗号分隔(如果内容里有逗号,就换成竖线|或者其他不会冲突的分隔符),格式如下:
https://example.com,https://my-custom-site.com,example_saved.png https://test-page.com,https://my-test-url.com,test_saved.png
每列的含义:
- 第一列:要打开的原始网址
- 第二列:需要替换到网页中的目标URL
- 第三列:截图保存的文件名
第二步:安装依赖&准备浏览器驱动
- 安装Selenium库:打开命令行输入
pip install selenium
- 下载对应浏览器的驱动(比如ChromeDriver):去你用的浏览器官方驱动页面,下载和浏览器版本完全匹配的驱动,把它放在Python的安装目录里,或者和你的脚本放在同一个文件夹下。
第三步:编写核心脚本
下面是完整的可运行脚本,每一行都加了注释,新手也能看懂:
# 导入Selenium核心库和辅助工具 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 配置浏览器选项(这里以Chrome为例,最大化窗口) chrome_options = webdriver.ChromeOptions() chrome_options.add_argument("--start-maximized") # 初始化浏览器驱动 driver = webdriver.Chrome(options=chrome_options) try: # 读取外部配置文件,用utf-8编码避免中文乱码 with open("urls_config.txt", "r", encoding="utf-8") as config_file: # 逐行处理,跳过空行 for line in config_file: cleaned_line = line.strip() if not cleaned_line: continue # 拆分每行的配置项(如果用了其他分隔符,这里就改成对应的,比如split("|")) original_url, target_url, screenshot_filename = cleaned_line.split(",") # 1. 打开原始网址 print(f"正在访问:{original_url}") driver.get(original_url) # 等待页面加载完成(用显式等待比固定休眠更靠谱,这里等页面标题加载出来) WebDriverWait(driver, 10).until(EC.title_is_not("")) # 2. 替换网页中的URL(两种常见场景选一个用) # 场景A:替换页面中所有a标签的href属性(把包含原始网址的链接换成目标URL) all_links = driver.find_elements(By.TAG_NAME, "a") for link in all_links: current_href = link.get_attribute("href") if current_href and original_url in current_href: # 用JS修改元素属性 driver.execute_script("arguments[0].setAttribute('href', arguments[1]);", link, target_url) print(f"已替换链接:{current_href} → {target_url}") # 场景B:替换页面所有文本内容里的原始网址(如果需要的话,把上面场景A注释掉,打开下面这段) # driver.execute_script(f""" # document.body.innerHTML = document.body.innerHTML.replaceAll("{original_url}", "{target_url}"); # """) # print(f"已替换页面中所有文本里的URL:{original_url} → {target_url}") # 3. 截图并保存 driver.save_screenshot(screenshot_filename) print(f"截图已保存:{screenshot_filename}\n") finally: # 不管任务成功还是失败,最后都关闭浏览器 driver.quit() print("所有任务执行完毕,浏览器已关闭")
新手必看注意事项
- 驱动匹配问题:一定要下载和浏览器版本完全对应的驱动,不然会报错!
- 文件路径:如果你的
urls_config.txt不在脚本同目录,要写绝对路径,比如C:/Users/你的用户名/Desktop/urls_config.txt - 等待优化:脚本里用了显式等待(
WebDriverWait),比固定的time.sleep更灵活,能自适应页面加载速度,推荐用这个。 - 分隔符选择:如果你的网址或文件名里有逗号,就把
split(",")改成split("|")或者其他不会冲突的符号,同时配置文件里也要对应修改。
内容的提问来源于stack exchange,提问作者Firaun
相关产品推荐
相关产品推荐

