公開ページでスクリプトからVKontakteにデータを投稿する



最近、VKontakteで毎日の気象データを公開するというアイデアを思いつきました。仕事の前の夏の朝、私はしばしば天気予報サイトを見るのを忘れて、天気予報士が助言したものとはまったく異なる服装をしていました。 このトピックでは、VKontakteへの投稿の実装についての議論と、私がなんとかして利益を得た例があります。



アイデア
すべてはアイデアから始まりました-最初は少し退屈に思えたので、実装のポイントがわかりませんでしたが、2回(または3回)考えた後、これが私のスキルにいくらかの利益をもたらす可能性があることに気付きました。 しかし、それについては以下で:)



PythonまたはPHP
最初のことは、私が書くものを選択することでした-選択は素晴らしく制限されていませんでした:python、私は文字通り数ヶ月またはphp-私はすでに4年間さまざまな小さなスクリプトを練習してきました。約数時間、私はまだPythonの実装にはまだ成熟していないと判断しました:)したがって、選択は明らかでした-実装にシンプルで時々過度の不器用なphp(スクリプトにエラーを指定すると感謝します-リンクは記事の最後になります)



Vkontakteでの承認
もちろん、私は車輪を再発明したくはありませんでしたし、VKontakte承認のために良いクラスをグーグルで永続的にグーグルしようとしましたが、接触APIを介して動作する古代のスクリプトやクラスに出くわしませんでした。 グループの代わりにエントリを公開することは不可能であるという理由で、2番目のオプションは私には向いていませんでした-最初に考えたように、Habrからの誰かの古いコメントに頼っています...そして無駄です! 実装後、APIの公式ドキュメントを読んで、これが既に可能であることを読みましたが、バイクはすでに書かれています...現在、VKontakte APIの下でそれを書き換える計画があります。 唯一の良いニュースは、自転車がまったくかさばらず、サイトでの現在の認証実装の厳しい現実で動作していることが判明したことです。

承認および転記コード:

define('SCR_DIR', dirname(__FILE__)); //   include_once(SCR_DIR . '/config.php'); //  (, ,   ) include_once(SCR_DIR . '/classes/minicurl.class.php'); //    curl,     include_once(SCR_DIR . '/classes/vk_auth.class.php'); //    $vk = new vk_auth($VKEMAIL, $VKPWD, $VKPPID, $SLEEPTIME); //    , $VKEMAIL -    , $VKPWD - , $VKPPID -   , $SLEEPTIME -      //       ,    ,   ,     /data/logfile.txt if(!$vk->check_auth()) { exit('Error! See logfile.'); } //   $message     if (!$vk->post_to_wall($message)) { exit('Error! Not Posted!'); } else { echo 'Posted!'; }
      
      







天気パーサー
承認の作成が完了したら、天気パーサーの作成に進みました。以前のようにレギュラーを使用したくありませんでした。 非常に長い間それらを発明する必要があり、天気が来る場所を変更したい場合は...この段階で、 XPath介したデータ解析に関するDmitry Rodinのブログエントリは私を大いに助けました。 XPathについて何度か聞いたことがありますが、それが何であるかはわかりませんでした。今では、この便利な方法であらゆるサイトからデータを取得するときです。 彼のクラスをテストし、自分のために少し書き直したので、私はこれがまさに私が必要とするものだと決めました。 すべてのXPathパスはFireBugから簡単に取得できますが、一部は間違っています。 パーサーは整頓を使用して、無効なhtmlコードをクリアします。したがって、FireBugアドオン-FirePathを使用することをお勧めします。

ギズメテオを使用したXPath天気解析リクエストのカップル:

 include_once(SCR_DIR . '/classes/htmlparser.class.php'); //   $parser = new HTMLParser('http://www.gismeteo.ru/city/hourly/' . $CITY); // $CITY -   ,   $weather_temperature = $parser->getConvDataFromXPath(".//*[@id='weather']/div[1]/div/div[2]"); //          UTF-8 $weather_type = $parser->getConvDataFromXPath(".//*[@id='weather']/div[1]/div/dl/dd"); //    (, ,  ..)
      
      







この小さなスクリプトの実装から得たもの:

  1. VKontakteで承認用の小さな自転車を作成しました(APIの下で書き換える予定です)。
  2. 私はXPathに精通し、通常のサイトよりもはるかに高速な生産性でサイトを解析する方法を学びました。
  3. gitにさらに慣れました。
  4. 彼の街に小さな便利な「サービス」を作成しました。
  5. すぐに、連絡先のすべての訪問者が有用な情報に興味がなく、写真や面白いステータスだけに興味があるような野菜かどうかを調べます。




このページで私の実装を見ることができます: Vologdaの天気予報

ソースコードを確認するか、都市の同じ天気ページを作成します: github.com/saippuakauppias/vkweather



PS:誰かがそれを必要とするなら、私はVKontakte認可クラスでのみ別のフォークを作ることができます-個人で書いてください。



All Articles