Skip to main content
 首页 » 编程设计

python之python 中的 Selenium 和多处理

2025年05月04日9kenshinobiy

在我的 django 应用程序中,我使用 selenium 来抓取和解析一些 html 页面。我试图引入多进程来提高性能。这是我的代码:

import os 
from selenium import webdriver 
from multiprocessing import Pool 
 
os.environ["DISPLAY"]=":56017" 
 
def render_js(url): 
    driver = webdriver.Firefox() 
    driver.set_page_load_timeout(300) 
    driver.get(url) 
    text = driver.page_source 
    driver.quit() 
    return text 
 
def parsing(url): 
    text = render_js(url) 
    ... parsing the text .... 
    ... write in db....  
 
 
url_list = ['www.google.com','www.python.com','www.microsoft.com'] 
pool = Pool(processes=2) 
pool.map_async(parsing, url_list) 
pool.close() 
pool.join() 

当两个进程同时工作并使用 selenium 时出现此错误:第一个进程以“www.google.it”启动 firefox 并返回正确的文本,第二个以 url“www.python.com”返回www.google.it 的文本而不是 www.python.com 的文本。你能告诉我哪里错了吗?

请您参考如下方法:

from selenium import webdriver 
from multiprocessing import Pool 
 
def parsing(url): 
    driver = webdriver.Chrome() 
    driver.set_page_load_timeout(300) 
    driver.get(url) 
    text = driver.page_source 
    driver.close() 
    return text 
 
url_list = ['http://www.google.com', 'http://www.python.com'] 
pool = Pool(processes=4) 
ret = pool.map(parsing, url_list) 
for text in ret: 
    print text[:30] 

我尝试运行您的代码,但 Selenium 提示错误的 URL。添加 http:// 使其工作。