【Selenium】提高测试&爬虫效率: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
from concurrent.futures import ThreadPoolExecutor
# 初始化WebDriver
driver = webdriver.Chrome()
# 定义一个函数,该函数会被多个线程并行执行
def crawl_page(url):
driver.get(url)
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "myDynamicElement")))
# 这里添加你的爬取代码
# 例如:content = driver.find_element_by_id("content").text
# 定义URL列表
urls = ["http://example.com/page1", "http://example.com/page2", "http://example.com/page3"]
# 使用ThreadPoolExecutor来并行处理URL列表
with ThreadPoolExecutor(max_workers=5) as executor:
executor.map(crawl_page, urls)
# 关闭WebDriver
driver.quit()
这段代码使用了concurrent.futures.ThreadPoolExecutor
来并行处理一个URL列表。每个URL都在自己的线程中使用Selenium来加载和爬取数据。这种方法可以显著提高爬虫任务的执行效率,尤其是在处理多个简单或复杂的网页加载和数据提取时。
评论已关闭