質問

私はJava開発者であり、与えられたタスクの自動化について質問があります。毎日3回、仕事中のこのWebサイトにログインし、いくつかのフォーム要素を選択し、[送信]をクリックしてレポートを印刷する必要があります。このタスクを自動化するスクリプトをどのように書くことができるのだろうか?どこから始めればいいですか?どの言語でそれを行うべきですか? PHPでこれを実行できると考えていたのでしょうか。

どうもありがとう。

役に立ちましたか?

解決

PHPで cURL を確認します。これにより、Webブラウザの通常のすべての機能をコードを使用して実行できます(マウスの移動以外)。はい、スクリーンスクレイピングを行う必要があります。

他のヒント

まだ触れられていない可能性のある固着点は、あなたのフレーズ<!> quot;このウェブサイトへのログイン<!> quot;だと思います。...バックドアを通ってレポートにアクセスします。

過去にサードパーティのサイトからレポートをダウンロードする必要があったときに、この種の問題が発生しました。問題は、サイトにログインするためにハードコード化された、スクリプトにやさしい方法が必要なため、レポートパラメータにアクセスするための認証ができないことでした。ただし、サイトは組織の内部にあると考えられるため、データにアクセスするためにセキュリティ要件をバイパス/再加工することが可能かもしれません。この場合、上記の画面スクレイピング方法のいずれかを使用できるはずです。

そうでない場合、実際のログイン手順をスクリプトまたはアプリケーションに組み込み、設定されている可能性のあるCookieをダウンロードしてキャプチャし、データリクエストに組み込む必要があります。

フォームがどの言語で書かれているかわかりませんが、できることは

  • 呼び出されたときにレポートを生成するスクリプトにフォームを書き直します
  • cron エントリを使用して、このタスクを毎日実行するようにスケジュールし、出力をメールで送信しますあなた

cronは、基本的にUnixシステムのスケジュールされたタスクです。 Windowsベースのサーバーは、タスクスケジューラをほぼ同じ目的で使用できます。

上記は、現時点でレポートを生成し、それを変更/新しいファイルにコピーして出力を電子メールで送信できるスクリプトにアクセスできることを前提としています。そうでない場合は、画面のスクレイピングを調べる必要があります。 Java開発者の場合、 thisを見つけることができます。 Javaスクリーンスクレイピングユーティリティのリストから始めましょう。

<!> quot; web scraping <!> quot;という名前です。または<!> quot; screen scraping <!> quot;。これを行うためのライブラリがたくさんあります。ただし、Java固有のツールとは話せませんでした。私は.Netの男です(.Netの方法はSystem.Net.WebClientまたはSystem.Net.HttpWebRequest / System.Net.HttpWebResponseです)。しかし、私は何かがあると確信しています。

とりあえず、最初のステップは、フォームの値を入力するページに移動し、ページのソースを表示することです。特定の<!> lt; form <!> gt;を探します。入力している要素、および投稿先を確認します( action です)。次に、<!> lt; input <!> gt;を見つけます。 <!> lt; select <!> gt;、<!> lt; textarea <!> gt;使用する要素(フォームの非表示入力を含む)、および取得する必要がある値を把握します。送信できるライブラリが見つかったら、リクエストを作成する方法がわかります。

ページにアクセスするために最初にサイトにログインする必要がある場合、事態はより複雑になる可能性があります。セッション値を取得して解析するか、特定のCookieをサーバーに送信できる必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top