ガチョウのインターネットを解析する方法

「ウェブサイトの解析」-わずか6か月前に私を暗闇に陥れたフレーズ。 ファントムのセットアップに関する一般的な問題、またはセレンの大騒ぎは、すぐに私の頭を通り抜けました。 解析中にuseragent、ページネーション、およびその他のアクションを置き換える必要性についての考えは、このタスクを長時間延期せざるを得ませんでした...



しかし、私がグースに会ったとき、すべてが変わりました。 解析の世界は新しい色で輝きました。 カットの下で、難しいサイトの解析に役立つ簡単な例をいくつか示したいと思います。



ちなみに、パーサーを書いたガスは、それについて映画を作ることにしました。これまでのところ、予告編を楽しむことができます。











サイトにグースを設定する方法



グースがピンチするのを好むことは誰でも知っています-草、祖母、ガチョウ、そしてもちろんサイト。 Gusがビジネスを延期し、サイトを調整するためには、彼に道を示す必要があります。



現時点では、Gusは解析できます。





メソッドにはそれぞれ長所と短所があります。 たとえば、Phantomはサーバー上で実行できますが、デバッグするのはあまり便利ではありません。ブラウザーでGooseを起動するには、サイトにGooseを配置する外部ツールが必要です。 Seleniumはかなり普遍的なソリューションですが、現時点では、Gooseは使用方法を学習しているだけです。



したがって、まずサイトでグースを開始するには、まず生息地を選択して作成する必要があります。 可能な環境:







この記事では、PhantomEnvironmentが現時点で最も開発されていると考えます。



import { PhantomEnvironment, Parser } from 'goose-parser'; const env = new PhantomEnvironment({ url: 'http://www.gooseplanet.ru/' }); const parser = new Parser({env});
      
      







環境によって、Gooseのエントリポイント-サイトのホームページのURLが決まります。



解析する前に



多くの場合、解析を開始する前に、ページでいくつかのアクションを実行する必要があります。 たとえば、ガチョウの出会い系サイトでの検索。 ガチョウはあなたを探します-ただ尋ねてください。



 const actions = [ { type: 'type', //   -  text: '', //    ,    scope: '.field[name=search]' //   }, { type: 'click', scope: 'button[type=submit]', waitForPage: true //         } ];
      
      







宣言は私たちのすべてです



ガチョウは説明的です。 彼はシンプルで簡潔です。



ピンチする時間です



これで、ガチョウを見つける方法がわかりました。 彼らの住所を撮影する時が来ました。 検索結果のレイアウトが次のようになっているとしましょう。

 <ul class="goose-babes"> <li class="goose-babe"> <img src="https://habrastorage.org/getpro/habr/post_images/3df/cbd/088/3dfcbd088e8f5b4ba060a73f8d5e3788.jpg" alt="" class="photo"> <span class="name"></span> <div> <address> №5</address> </div> </li> <li class="goose-babe"> <img src="https://habrastorage.org/getpro/habr/post_images/a48/283/87b/a4828387bbe8658749cc7a42d53ddcd9.jpg" alt="" class="photo"> <span class="name"></span> <div> <address></address> </div> </li> </ul>
      
      







このレイアウトのデータの場所に関するルールを設定することにより、Gooseの方向を定めます。

 const rules = { scope: '.goose-babe', collection: [[ { name: 'name', scope: '.name' }, { name: 'address', scope: 'address' } ]] };
      
      







Gooseを起動します!!



 parser.parse({ actions, rules }).then(console.log);
      
      







そして結果が得られます:

 [ { "name": "", "address": " №5" }, { "name": "", "address": "" } ]
      
      







そしてこれはほんの始まりです



もちろん、この記事は読者にGusを知っているだけで、すべての可能性を説明しているわけではありません。 Gusでできることの詳細については、 ドキュメントを参照してください 。 それでも、Gooseが困難な状況のために保存したトリックのいくつかをリストしましょう。







ガチョウに星を-そして彼はあなたのために世界を引き継ぐだろうgithub.com/redco/goose-parser



All Articles