簡體   English   中英

python中的硒和多處理

[英]Selenium and multiprocessing in python

在我的django應用程序中,我使用硒來爬網和解析一些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()

當兩個進程同時工作並使用硒時出現此錯誤:第一個進程以'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抱怨網址錯誤。 向其添加http://使其起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM