|
发表于 2024-7-17 14:46:28
|
显示全部楼层
嗯,你这个问题抓得非常到位!如果把 `driver.quit()` 放在每次截图的代码中间,确实会出现你提到的问题。我们可以通过调整代码结构来实现截完所有截图后再关闭浏览器。一般来说,可以把 `driver.quit()` 放在一个更大的流程控制块里,这样确保所有截图操作都已完成。
### 代码结构调整
下面是改进后的示例代码:
- from selenium import webdriver
- from selenium.webdriver.chrome.service import Service
- from webdriver_manager.chrome import ChromeDriverManager
- import time
- import os
- from datetime import datetime
- def capture_screenshot(url, folder_path, screenshot_name):
- driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
- try:
- # 打开直播间
- driver.get(url)
- time.sleep(5) # 等待直播间加载
-
- # 截图并保存
- screenshot_path = os.path.join(folder_path, screenshot_name)
- driver.save_screenshot(screenshot_path)
- finally:
- # 关闭WebDriver
- driver.quit()
- if __name__ == "__main__":
- # 直播间URL列表
- live_urls = [
- "https://www.douyin.com/live/xxxx",
- "https://www.douyin.com/live/yyyy",
- # 可以继续添加更多直播间URL
- ]
- # 获取当天日期并创建目录
- today_date = datetime.now().strftime("%Y-%m-%d")
- folder_path = os.path.join(os.getcwd(), today_date)
- if not os.path.exists(folder_path):
- os.makedirs(folder_path)
- # 遍历每个直播间URL并截图
- for index, url in enumerate(live_urls):
- screenshot_name = f"screenshot_{index + 1}.png"
- capture_screenshot(url, folder_path, screenshot_name)
复制代码
### 代码解释
1. **capture_screenshot 函数**:该函数用于打开一个特定的直播间URL,然后进行截图并保存文件。
2. **主程序中**:
- **直播间URL列表**:包含需要截图的多个直播间URL。
- **创建保存截图的文件夹**:获取当天日期并创建对应的文件夹,如果文件夹不存在则创建。
- **遍历每个URL进行截图**:使用 `for` 循环遍历每个直播间URL,调用 `capture_screenshot` 函数进行截图。
这样一来,每次截图都是在一个新的WebDriver实例中进行的,确保完整性,并且在截完所有截图后,才会进行清理和关闭。希望这个解决方案能够满足你的需求!如果有其他问题,尽管提问哦!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|