私はウェブスクレイピングが初めてです。以下に示すように、Debian BusterとFirefox GeckodriverでPythonを使用してプライベートアプリケーションを構築しています。サーバーはオンラインです。
firefox_binary = FirefoxBinary('/usr/bin/firefox')
opts = FirefoxOptions()
opts.add_argument("--headless")
driver = webdriver.Firefox(options=opts, firefox_binary=firefox_binary)
driver.get(url)
私の目標は、Webページでajax呼び出しを介してこのアプリケーションを起動することです。これはnginxサーバーなので、pyスクリプトはphp execコマンドから呼び出されます。
exec ('/usr/bin/python3 webdriver.py');
rootまたは他のユーザーとしてログインすると、Debianのコマンドラインで正しく機能します。 Webインターフェースを使用してスクリプトを呼び出すと、ユーザーはwww-dataで、次のエラーが発生します。接続が拒否されました(OSエラー111)。
3日間、すべてのインターネットリソースを検索し、可能なすべてを試しましたが、まだ解決策はありません。
この問題の解決策を知っていますか?
編集する:
セレンバージョン3.141.0
Mozilla Firefox 78.8.0esr
ゲッコドライバー0.29
www-dataユーザーのgeckodriver.log(エラーを含む):
- 1614703595351 geckodriverについて127.0.0.1:53899で聞く
- 1614703595556 mozrunner::runner INFO コマンドの実行: "/usr/bin/firefox" "--marionette" "--headless" "-foreground" "-no-remote" "-profile" "/tmp/rust_mozprofile22XajP"
- ***ヘッドレスモードで動作しています。
管理者のgeckodriver.log(エラーなし):
- 1614702846828 geckodriverについて 127.0.0.1:46897で聞く
- 1614702847019 mozrunner::runner INFO コマンドの実行: "/usr/bin/firefox" "--marionette" "--headless" "-foreground" "-no-remote" "-profile" "/tmp/rust_mozprofile7jTA4y"
- ***ヘッドレスモードで動作しています。
- 1614702859057マリオネットINFOリスニングポート45145
- 1614702859109 Marionette WARN TLS証明書エラーは、このセッションでは無視されます。
- JavaScript警告:https://.............js?v=1.2.7199.0、行119:returnステートメント以降のコードにアクセスできません。
- JavaScript警告:https://.............js?v=1.2.7199.0、行119:returnステートメント以降のコードにアクセスできません。
- 1614702872140マリオネット警告TimedPromiseが500ミリ秒後にタイムアウトしました:スタックトレース:
- TimedPromise/<@chrome://marionette/content/sync.js:245:13
- TimedPromise@chrome://marionette/content/sync.js:230:10
- Interaction.flushEventLoop@chrome://marionette/content/interaction.js:416:10 webdriverClickElement@chrome://marionette/content/interaction.js:182:31
- 1614702900530 Marionette INFO がポート 45145 でリッスンを停止しました。
geckodriver.log geckodriver 0.21のwww-データ:
1614706982655 geckodriver 情報 geckodriver 0.21.0
1614706982680 geckodriverについて127.0.0.1:33947で聞く
1614706983553 mozrunner::runner INFO コマンドの実行: "/usr/bin/firefox" "-marionette" "--headless" "-foreground" "-no-remote" "-profile" "/tmp/rust_mozprofile.p37a7r0syAmR
***ヘッドレスモードで動作しています。
(firefox-esr:22409): dconf-CRITICAL **:17:44:03.845: '/var/www/.cache/dconf' ディレクトリを作成できません: 権限が拒否されました。 dconf が正しく動作しません。
ベストアンサー1
これは権限の問題です。 www-dataのホームディレクトリは/var/wwwで、通常はrootが所有しています。
/var/www を www-data に付与したり、権限の変更を制限したりするには、/var/www/.mozilla を作成し、所有権を www-data に変更できます。その後、スクリプトを再実行してみてください。
現在起こっているように見えるのは、Firefoxがユーザー設定を保存しようとしましたが失敗したことです。エラーは報告されておらず、基本プロセスは完全に中断されていませんが、まだgeckodriverと通信できないほど制限されています。