2014-07-04 15 views
9

Ho impostato un semplice script di webscraping in Python con Selenium e PhantomJS. Ho circa 200 URL in totale da analizzare. Lo script funziona bene dapprima poi dopo circa 20-30 URL (può essere più o meno come sembra casuale quando fallisce e non è collegato ad alcun particolare URL) ottengo il seguente errore in python:Il selenio non può connettersi a GhostDriver (ma solo qualche volta)

selenium.common.exceptions.WebDriverException: Message: 'Can not connect to GhostDriver' 

e il mio ghostdriver.log:

PhantomJS is launching GhostDriver... 
[ERROR - 2014-07-04T17:27:37.519Z] GhostDriver - main.fail - {"message":"Could not start Ghost Driver","line":82,"sourceId":140692115795456,"sourceURL":":/ghostdriver/main.js","stack":"Error: Could not start Ghost Driver\n at :/ghostdriver/main.js:82","stackArray":[{"sourceURL":":/ghostdriver/main.js","line":82}]} 

ho cercato e la maggior parte delle domande sul SO sembra di essere che non possono persino eseguire un singolo URL. L'unica altra domanda che ho trovato dove si verifica l'errore nel mezzo dello script è this one e la risposta è l'aggiornamento di phantomjs all'ultima versione, cosa che ho fatto. L'altra risposta dice semplicemente di provare di nuovo quell'URL e non sembra una buona soluzione dato che l'URL potrebbe semplicemente fallire di nuovo.

Sono in esecuzione phantomjs versione 1.9.7 e selenio versione 2.42.1 su Linux Mint 17 su Python 2.7.6

for url in ['example.com/1/', 'example.com/2/', 'example.com/3/', .. , ..]: 
    user_agent = 'Chrome' 
    dcap = dict(DesiredCapabilities.PHANTOMJS) 
    dcap['phantomjs.page.settings.userAgent'] = user_agent 
    driver = webdriver.PhantomJS(executable_path='/usr/bin/phantomjs', desired_capabilities=dcap) 
    driver.get(url) 
+1

cos'è 'row.url'? –

+0

@PadraicCunningham: Typo. Fisso. –

+1

come hai installato phantomjs? –

risposta

8

ho avuto lo stesso problema per risolvere il problema ho installato phantomjs dalla sorgente.

For Linux (Debian): 
sudo apt-get update 
sudo apt-get install build-essential chrpath git-core libssl-dev libfontconfig1-dev libxft-dev 
git clone git://github.com/ariya/phantomjs.git 
cd phantomjs 
git checkout 1.9 
./build.sh 

For Mac os: 
git clone git://github.com/ariya/phantomjs.git 
cd phantomjs 
git checkout 1.9 
./build.sh 

Per gli altri sistemi controllare il seguente link http://phantomjs.org/build.html

Optional : 
cd bin 
chmod +x phantomjs 
cp phantomjs /usr/bin/ 

ho capito perché quando ho letto il mio file ghostdriver.log ha detto.

[ERROR - 2014-09-04T19:33:30.842Z] GhostDriver - main.fail - {"message":"Could not start Ghost Driver","line":82,"sourceId":140145669488128,"sourceURL":":/ghostdriver/main.js","stack":"Error: Could not start Ghost Driver\n at :/ghostdriver/main.js:82","stackArray":[{"sourceURL":":/ghostdriver/main.js","line":82}]} 

Ero sicuro che ci devono essere alcuni file mancanti che, deve essere utilizzato per alcuni casi limite. Così ho deciso di costruire dalla fonte e ora funziona bene.

+1

Building Phantom per OSX fa pena. Richiede le librerie QT. – Volatil3

Problemi correlati