2013-06-11 14 views
25

La domanda è semplice, ma qualche contesto può essere d'aiuto.Come disabilitare o modificare il percorso di ghostdriver.log?

Sto provando a distribuire scrapy mentre utilizzo selenio e phantomjs come downloader. Ma il problema è che continua a dire il permesso negato durante il tentativo di distribuzione. Quindi voglio cambiare il percorso di ghostdriver.log o semplicemente disabilitarlo. Guardando la pagina github di phantomjs -h e ghostdriver non sono riuscito a trovare la risposta, anche il mio amico google mi ha deluso.

$ scrapy deploy 
Building egg of crawler-1370960743 
'build/scripts-2.7' does not exist -- can't clean it 
zip_safe flag not set; analyzing archive contents... 
tests.fake_responses.__init__: module references __file__ 
Deploying crawler-1370960743 to http://localhost:6800/addversion.json 
Server response (200): 
Traceback (most recent call last): 
    File "/usr/lib/pymodules/python2.7/scrapyd/webservice.py", line 18, in render 
    return JsonResource.render(self, txrequest) 
    File "/usr/lib/pymodules/python2.7/scrapy/utils/txweb.py", line 10, in render 
    r = resource.Resource.render(self, txrequest) 
    File "/usr/lib/python2.7/dist-packages/twisted/web/resource.py", line 216, in render 
    return m(request) 
    File "/usr/lib/pymodules/python2.7/scrapyd/webservice.py", line 66, in render_POST 
    spiders = get_spider_list(project) 
    File "/usr/lib/pymodules/python2.7/scrapyd/utils.py", line 65, in get_spider_list 
    raise RuntimeError(msg.splitlines()[-1]) 
RuntimeError: IOError: [Errno 13] Permission denied: 'ghostdriver.log 
+0

Hmm, mi piacerebbe vedere il tuo middleware del downloader, è pubblico? –

+0

Non ancora lo renderò pubblico stasera, si basa su scrapy-renderjs e scrapy-webdriver ma haha ​​semplificato. Non l'ho separato dal progetto, quindi non l'ho reso pubblico. –

risposta

29

Quando si utilizza il driver PhantomJS aggiungere il seguente parametro:

driver = webdriver.PhantomJS(service_log_path='/var/log/phantomjs/ghostdriver.log') 

codice correlate, sarebbe bello avere la possibilità di disattivare la registrazione, però, sembra quello non supportati:

selenio /webdriver/phantomjs/service.py

class Service(object): 
    """ 
    Object that manages the starting and stopping of PhantomJS/Ghostdriver 
    """ 

    def __init__(self, executable_path, port=0, service_args=None, log_path=None): 
     """ 
     Creates a new instance of the Service 

     :Args: 
     - executable_path : Path to PhantomJS binary 
     - port : Port the service is running on 
     - service_args : A List of other command line options to pass to PhantomJS 
     - log_path: Path for PhantomJS service to log to 
     """ 

     self.port = port 
     self.path = executable_path 
     self.service_args= service_args 
     if self.port == 0: 
      self.port = utils.free_port() 
     if self.service_args is None: 
      self.service_args = [] 
     self.service_args.insert(0, self.path) 
     self.service_args.append("--webdriver=%d" % self.port) 
     if not log_path: 
      log_path = "ghostdriver.log" 
     self._log = open(log_path, 'w') 
+0

Su Windows, posso semplicemente creare il mio file di registro ovunque? – User

+0

@macdonjo Penso che se fornisci un percorso "Windows friendly" puoi metterlo ovunque tu voglia purché il processo abbia il permesso di accedere ai file nel percorso che hai fornito. Sono su Linux anche se –

+0

Qualcuno ha provato a usare '/ dev/null' come percorso di log per disabilitare la registrazione? – hayavuk

15
#Reduce logging level 
    driver = webdriver.PhantomJS(service_args=["--webdriver-loglevel=SEVERE"]) 

    #Remove logging 
    import os 
    driver = webdriver.PhantomJS(service_log_path=os.path.devnull) 
Problemi correlati