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.のようなものを使用してコードを開始する必要があるかもしれません
'p/phantomjs'は' PhantomJS'実行可能ファイルまたはフォルダですか? – Andersson
@Anderssonはいそうです。最初に確認したのは... – Alex
@Alexこのp/phantomjsはあなたのスクリプトに関連してどこにありますか?問題は 'driver = webdriver.PhantomJS(" p/phantomjs ")'という行です。このファイルを読んでいることを示すことができますか? – briansrls