確かに、あなたはすぐに言うでしょう:「ハハ! 彼らは自転車を思いつき、Googleアラートについて知らない。」 Googleアラートについて知っています。 これはほとんど必要なものですが、それではありません:-)。 Googleアラートを使用してから6か月以上、必要なものを取得できませんでした。 必要なものは次のとおりです。
- リストされている特定のサイトを検索します。
- 最終日のみを検索します。
- ストップワードを追加する機能。
- Googleアラートは、何らかの方法で結果をさらにフィルタリングします。 つまり、通常のGoogle検索では、Googleアラート以上のものが提供されます。
そのため、自転車を作ろうとすることにしました。
このタスクの一部として、指定されたサイトで最大30個の新しいマテリアルを検索し、自動検索を開始する24時間以内に作成する必要があります。 つまり、大雑把に言えば、誰が最後の日にインターネットで何を書いたのか。 入力は次のようになります。
- サイトアドレスのリスト-検索するサイトのURL。
- 検索フレーズのリスト-検索するロシア語および/または英語のフレーズ。
- 不要な単語のリスト-検索結果に含まれてはならない単語。
アイデア
ネットワークには検索サービスを提供する多くのサービスがあり、その機能を使用してタスクを実装するのが論理的です。 google.com検索エンジンは、私たちの意見では最も適切なものとして選択されました。
Google検索
操作の原則は、他の検索エンジンと同じです。リクエストがGoogleに送信され、応答が返されます。 同時に、検索エンジンにはリクエストを生成するための柔軟な設定があるため、目的のリクエストを生成できます。
Google検索オプション
最も興味深い(タスクのフレームワーク内の)検索パラメーターを検討してください。
www.google.com/search ? | 実際にアドレス |
as_q | 検索語句(語句ではなく語句) |
数 | ページに表示される結果の数 |
as_eq | 検索結果に表示すべきではない単語 |
as_sitesearch | 検索するサイトのURL |
検索エンジンには他のパラメーターもありますが、タスクの一部としては面白くありません。 検索パラメーターを使用したGoogleリクエストの例:
http://www.google.com/search?as_q=64-bit+portability+&hl=en&newwindow=1&num=30&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0 %B2 + Google&as_epq =&as_oq =&as_eq =%D0%BA%D1%83%D0%BF%D0%B8%D1%82%D1%8C +%D1%81%D0%BA%D0%B0%D1%87% D0%B0%D1%82%D1%8C +&lr = lang_ru&cr =&as_ft = i&as_filetype =&as_qdr = d&as_occt = any&as_dt = i&as_sitesearch = http://www.codeguru.com/&as_rights=&safe=images
使い方
上記から、Google検索エンジンを使用して検索を自動化する可能性があることになります。 アルゴリズムは次のようになります。
- ソースデータに基づいて、Googleにリクエストが送信されます。
- 要求は進行中です。
- 結果の処理(htmlページの解析)。
- 各サイトおよび入力からの各検索フレーズについて、前の段落を繰り返します。
実装
スクリプトはphpで記述されています。
入力データ
入力データには、検索するURLサイトのリスト、検索フレーズのリスト、検索結果に含まれてはならない単語のリストの3種類があります。 このデータを表すには、次の形式のxmlファイルが使用されます。
<?xml version = "1.0" encoding = "utf-8"?> <search_params lang = "en"> <サイト> <url> http://www.dreamincode.net </ url> <url> http://forum.vingrad.ru/ </ url> <url> http://forum.sources.ru/ </ url> <url> http://groups.google.com/ </ url> </ sites> <単語> <ホワイトリスト> <phrase> "64ビット" c ++ </ phrase> <phrase> 64ビットの移行</ phrase> <phrase> viva64 </ phrase> </ white_list> <black_list> <phrase>購入</ phrase> <phrase>ダウンロード</ phrase> </ black_list> </ words> </ search_params>
XML解析
XMLファイルの構造はシンプルでサイズが小さいため、 PHPスクリプトSimple HTML DOM Parserを使用できます。
スクリプトの使用法はドキュメントで説明されていますが、DOMで使用する技術は、有名なjavascriptライブラリであるJQueryの方法と非常に似ていることに注意してください。 たとえば、次のコードは、google.comのhtmlページからすべてのリンクを取得し、画面に表示します。
include( '../ simple_html_dom.php'); // URLまたはファイルからDOMを取得します $ html = file_get_html( 'http://www.google.com/'); //すべてのリンクを見つける foreach($ html-> $ eとして( 'a')を検索) echo $ e-> href。 '<br>';
ただし、Simple HTML DOM Parserを使用する場合、わずかなメモリの問題があります。 file_get_html関数は、呼び出しごとにsimple_html_domクラスの新しいオブジェクトを作成します。この関数がループで呼び出されると、メモリが不足します。 何らかの理由で、強制的にリリースすることはできません。 解決策は、この関数をループで使用するのではなく、一度呼び出して、simple_html_domクラスの1つのオブジェクトのみを操作することです。
スクリプト作成
MVCパターンを使用して記述された通常のphpスクリプトは、実際には興味深いものではありません。 ソースコードも複雑ではありません。
ユーザーインターフェイスは非常に禁欲的です-ページにアクセスするとき、「リクエストを送信」ボタン(ブラウザウィンドウ内)が1つあり、それを押すとしばらくしてから結果が表示されます。
まとめ
このスクリプトを実装した後、過去24時間に対象領域(64ビットおよび並列プログラミング)で世界で何が起こったのかを常に把握しています。