Sto usando selenium-python con PhantomJS. Il codice è più o meno così:PhantomJS in modo casuale non esce (usando Selenium con Python)
from selenium.webdriver import PhantomJS
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
driver = PhantomJS()
wait = WebDriverWait(driver, 10)
driver.get(url)
while True:
// scrap the page
try:
driver.find_elements_by_css_selector('.next')[0].click()
except: break
wait.until(expected_conditions.visibility_of_element_located((By.CSS_SELECTOR, '.loading')))
wait.until(expected_conditions.invisibility_of_element_located((By.CSS_SELECTOR, '.loading')))
driver.quit()
Uso un task di sedici che esegue periodicamente questo codice. Il problema è che di tanto in tanto ci sono alcuni processi phantomjs stantii. Quando analizzo i log di sedici, l'attività viene completata correttamente senza errori, ma il processo phantomjs è ancora in esecuzione.
qualche informazione in più:
- sto usando Python 3.2
- sto usando Sedano 3.1 con battito
- sto usando Debian Wheezy
- PhamtomJS ho compilato dai sorgenti e ha creato un collegamento simbolico come questo:
ln -s /opt/phantomjs/bin/phantomjs /usr/local/bin/
Qualcuno può suggerire un modo per eseguire il debug e scoprire chi è la colpa è questo?
È possibile sostituire PhantomJS con il browser preferito e posizionarlo su un display virtuale su Linux con xvfbwrapper. Se quei processi persistono potrebbe essere un problema di selenio. – barrios
Questa sarebbe l'ultima soluzione per passare a un altro browser (ad esempio Firefox o Chromium con XVFB). C'è un altro modo per eseguire il debug e scoprire chi è la colpa è questo? – Ali
Come probabilmente leggete, la compilazione di phantomjs non è consigliata se i binari corrispondono alle vostre esigenze. Che ne dici di installarlo dai repository debian o usare i file precompilati? – barrios