私は Java 開発者ですが、与えられたタスクの自動化について質問があります。
毎日 3 回、職場のこの Web サイトにログインし、いくつかのフォーム要素を選択してから、[送信] をクリックしてレポートを印刷する必要があります。
このタスクを自動化するスクリプトをどのように書けばよいのでしょうか? どこから始めればよいですか?何語でやればいいですか?私はPHPがこれを行うことができるかもしれないと考えていましたか、それともグリースモンキースクリプトでさえ可能でしょうか?
どうもありがとう。
私は Java 開発者ですが、与えられたタスクの自動化について質問があります。
毎日 3 回、職場のこの Web サイトにログインし、いくつかのフォーム要素を選択してから、[送信] をクリックしてレポートを印刷する必要があります。
このタスクを自動化するスクリプトをどのように書けばよいのでしょうか? どこから始めればよいですか?何語でやればいいですか?私はPHPがこれを行うことができるかもしれないと考えていましたか、それともグリースモンキースクリプトでさえ可能でしょうか?
どうもありがとう。
PHP でcURLを確認してください。コードを使用して、Web ブラウザーのすべての通常の機能を実行できます (マウスの移動以外)。はい、スクリーンスクレイピングを行う必要があります。
まだ触れられていない潜在的な問題点は、「この Web サイトにログインする」というフレーズだと思います... ログイン方法によっては、レポートにアクセスするためにバックドアを通過する必要がある場合があります。
以前、サード パーティのサイトからレポートをダウンロードする必要があったときに、このような問題が発生しました。問題は、サイトへのログインに必要な方法がハードコーディングされていて、スクリプトに適していないため、レポート パラメーターへのアクセスを認証できなかったことです。ただし、あなたのサイトは組織の内部にあると思われるため、データにアクセスするためにセキュリティ要件をバイパス/やり直すことができる可能性があります. この場合、上記のスクリーンスクレイピング方法のいずれかを使用できるはずです。
そうでない場合は、実際のログイン手順をスクリプトまたはアプリケーションに組み込み、設定されている可能性のある Cookie をダウンロードして取得し、それらをデータ要求に組み込む必要がある場合があります。
これは「Web スクレイピング」または「スクリーン スクレイピング」と呼ばれ、これを行うためのライブラリがたくさんあります。ただし、Java 固有のツールについて話すことはできませんでした。私は .Net 派です (.Net の方法は、System.Net.WebClient または System.Net.HttpWebRequest/System.Net.HttpWebResponse になります)。しかし、私は何かがあると確信しています。
それまでの間、最初のステップは、フォームの値を入力するページに移動し、ページのソースを表示することです。記入している特定の <form> 要素を探して、投稿先を確認します (それはactionです)。次に、使用する <input> <select>、<textarea> 要素 (フォームの非表示の入力を含む) を見つけ、取得する必要がある値を見つけます。リクエストを送信できるライブラリが見つかったら、リクエストを作成する方法がわかります。
ページにアクセスするために最初にサイトにログインする必要がある場合、事態はさらに複雑になる可能性があります。セッション値を取得して解析するか、特定の Cookie をサーバーに送信できるようにする必要がある場合があります。
あなたのフォームがどの言語で書かれているかはわかりませんが、できることは次のとおりです。
cron は、基本的に Unix システムでスケジュールされたタスクです。Windows ベースのサーバーは、ほぼ同じ目的でタスク スケジューラを使用できます。
上記は、現時点でレポートを生成するスクリプトへのアクセス権があり、それを変更したり、出力を電子メールで送信する新しいファイルにコピーしたりできることを前提としています。そうでない場合は、スクリーンスクレイピングを検討する必要があるかもしれません。あなたが Java 開発者であれば、この Java スクリーン・スクレイピング・ユーティリティーのリストが、作業を開始するのに便利であることに気付くかもしれません。