Selenium来爬取网页内容如何能不频繁开关驱动器
时间: 2023-05-24 09:06:35 浏览: 220
要避免频繁开关驱动器,可以考虑将驱动器的对象保存在全局变量中,这样在多个函数中都可以使用同一个驱动器对象,而不需要反复开关。同时,在程序结束时,需要显式地关闭驱动器对象以释放资源,可以使用 try-finally 代码块确保关闭驱动器对象。
下面是一个示例代码:
```python
from selenium import webdriver
# 全局变量保存驱动器对象
driver = None
def init_driver():
global driver
# 如果已经存在驱动器对象,则不再创建新的
if driver is not None:
return
# 创建驱动器对象
options = webdriver.ChromeOptions()
options.add_argument('--headless') # 设置为无界面模式
driver = webdriver.Chrome(options=options)
def scrape(url):
global driver
# 如果驱动器对象不存在,则先创建
if driver is None:
init_driver()
# 使用驱动器打开网页
driver.get(url)
# 爬取网页内容...
def close_driver():
global driver
# 关闭驱动器对象
if driver is not None:
driver.quit()
driver = None
try:
# 爬取多个网页
scrape('https://www.example.com/1')
scrape('https://www.example.com/2')
finally:
# 程序结束时关闭驱动器对象
close_driver()
```
这个示例中,使用全局变量 `driver` 来保存驱动器对象。在 `init_driver` 函数中,如果 `driver` 已经存在,则不再创建新的驱动器对象,否则创建一个新的 Chrome 驱动器对象,并设置为无界面模式。在 `scrape` 函数中,如果 `driver` 不存在,则先调用 `init_driver` 函数创建驱动器对象,然后使用 `driver.get` 方法打开网页,爬取网页内容。在 `close_driver` 函数中,使用 `driver.quit` 方法关闭驱动器对象。最后,在使用完驱动器对象后,使用 try-finally 代码块确保关闭驱动器对象。
阅读全文