2016-11-07 51 views
0

Python 3.5を使用してUbuntu 16.04インスタンスで簡単なプログラムを実行しようとしています。プログラムは以下の通りです。Selenium - 'Service'オブジェクトに属性 'process'がありません

from bs4 import BeautifulSoup 
from selenium import webdriver 

driver = webdriver.PhantomJS("p/phantomjs") 
driver.get("http://www.bbc.co.uk") 
s = BeautifulSoup(driver.page_source, "lxml") 
print(s.findAll("a")) 
try: 
    driver.close() 
except AttributeError: 
    pass 

すべてのモジュールが正しくインストールされています。私はプログラムを実行するときしかし、私は次のエラーを受け取る:

Traceback (most recent call last): 
    File "t.py", line 4, in <module> 
    driver = webdriver.PhantomJS("p/phantomjs") 
    File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/phantomjs/webdriver.py", line 52, in __init__ 
    self.service.start() 
    File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/common/service.py", line 64, in start 
    stdout=self.log_file, stderr=self.log_file) 
    File "/usr/lib/python3.5/subprocess.py", line 947, in __init__ 
    restore_signals, start_new_session) 
    File "/usr/lib/python3.5/subprocess.py", line 1551, in _execute_child 
    raise child_exception_type(errno_num, err_msg) 
OSError: [Errno 8] Exec format error 
Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.phantomjs.service.Service object at 0x7fb05cd964a8>> 
Traceback (most recent call last): 
    File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/common/service.py", line 163, in __del__ 
    self.stop() 
    File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/common/service.py", line 135, in stop 
    if self.process is None: 
AttributeError: 'Service' object has no attribute 'process' 

それはセレンというよりPhantomJSの問題であるかのように思え。しかし、私はどのようにプログラムが適切に動作するようにするか分かりません。

これと同様の他の質問では、ヘッドレスインスタンスを閉じることに問題があるようです。ただし、PhantomJSをインスタンス化しようとするとすぐにこのエラーが発生します。

どのようにこれを修正できますか?あなたのスクリプトと同じディレクトリにあるpフォルダが(あなたが言及してきたように)、あなたは

from bs4 import BeautifulSoup 
from selenium import webdriver 
import os 

path_to_phantom_js = os.path.dirname(__file__) + '/p/phantomjs' 
driver = webdriver.PhantomJS(path_to_phantom_js) 

P.S.のようなものを使用してコードを開始する必要があるかもしれません

+0

'p/phantomjs'は' PhantomJS'実行可能ファイルまたはフォルダですか? – Andersson

+0

@Anderssonはいそうです。最初に確認したのは... – Alex

+0

@Alexこのp/phantomjsはあなたのスクリプトに関連してどこにありますか?問題は 'driver = webdriver.PhantomJS(" p/phantomjs ")'という行です。このファイルを読んでいることを示すことができますか? – briansrls

答えて

0

場合それがうまくいかない場合、出力を教えてくださいprint(path_to_phantom_js)

関連する問題