2013-06-11 9 views
25

Pytanie jest proste, ale może pomóc trochę kontekstu.Jak wyłączyć lub zmienić ścieżkę pliku ghostdriver.log?

Próbuję wdrożyć scrapy podczas używania selenu i phantomjs jako downloader. Problem polega jednak na tym, że wciąż odmawia zgody na uprawnienia podczas próby wdrożenia. Więc chcę zmienić ścieżkę ghostdriver.log lub po prostu go wyłączyć. Patrząc na phantomjs -h i stronę github ghostdriver nie mogłem znaleźć odpowiedzi, mój przyjaciel google również mnie zawiódł.

$ 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, chciałbym zobaczyć oprogramowanie pośredniczące do pobierania plików, czy jest ono publiczne? –

+0

Jeszcze nie udostępni publicznie tej nocy, jest to oparte na scrapy-renderjs i scrapy-webdriver, ale uproszczone haha. Nie oddzieliłem go od projektu, więc nie upubliczniłem go. –

Odpowiedz

29

Podczas korzystania kierowca PhantomJS dodać następujący parametr:

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

kod pokrewnych, byłoby miło mieć opcję, aby wyłączyć rejestrowanie choć wydaje się nie wspierać ów:

selen /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

W systemie Windows mogę po prostu utworzyć plik dziennika w dowolnym miejscu? – User

+0

@macdonjo Myślę, że jeśli podasz ścieżkę "przyjazną dla systemu Windows", możesz umieścić ją w dowolnym miejscu, o ile procesor ma pozwolenie na dostęp do plików w podanej ścieżce. Jestem na Linuksie choć –

+0

Czy ktoś próbował użyć "/ dev/null" jako logu do wyłączenia rejestrowania? – 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) 
Powiązane problemy