phpQueryを使用してparsimサイトを簡単かつ自然に

こんにちはHabr、私はあなたの何人かがどんなサイトからでも必要な何かをやってのける必要があったと思う。 しかし、フレーズを引き出すために大量の関数を書くことは非常に退屈で、長く、生産的ではありません。

phpQueryを紹介します。 これは有名なjavascript freemark- jQueryの phpバージョンです。

著者は最善を尽くし、必要なほぼすべてを移植しました。



彼女が何ができるか見てみましょう。



そして、彼女は兄jQueryができることをすべて知っています。

実際のところ、まず最初に、%username%.habrahabr.ru / blog /で停止することはありません。



これを行うにはかなり多くの方法があります。

phpQuery :: newDocument ($ html、$ contentType = null)マークアップから新しいドキュメントを作成します。 $ contentTypeを指定しなかった場合、マークアップに基づいて決定されます。 うまくいかない場合は、utf-8のtext / htmlであると想定します。

phpQuery :: newDocumentFile($ file、$ contentType = null)ファイルから新しいドキュメントを作成します。 newDocument()と同じように動作します

phpQuery :: newDocumentHTML ($ html、$ charset = 'utf-8')

phpQuery :: newDocumentXHTML ($ html、$ charset = 'utf-8')

phpQuery :: newDocumentXML ($ html、$ charset = 'utf-8')

phpQuery :: newDocumentPHP ($ html、$ contentType = null)詳細については、 こちらをご覧ください

phpQuery :: newDocumentFileHTML ($ファイル、$文字セット= 'utf-8')

phpQuery :: newDocumentFileXHTML ($ファイル、$文字セット= 'utf-8')

phpQuery :: newDocumentFileXML ($ファイル、$文字セット= 'utf-8')

phpQuery :: newDocumentFilePHP ($ファイル、$ contentType)詳細については、 こちらをご覧ください



まあ、私たちは遠くまで行きません。 さあ、ユーザー名%、ブログの投稿を解析してください。 まず、 phpQueryをダウンロードします。 次に、index.phpのようなものを作成します

<?php require ('phpQuery/phpQuery.php'); $habrablog = file_get_contents('http://%username%.habrahabr.ru/blog/'); $document = phpQuery::newDocument($habrablog); $hentry = $document->find('div.hentry'); foreach ($hentry as $el) { $pq = pq($el); //   $  jQuery $pq->find('h2.entry-title > a.blog')->attr('href', 'http://%username%.habrahabr.ru/blog/')->html('%username%'); //     $pq->find('div.entry-info')->remove(); //    $tags = $pq->find('ul.tags > li > a'); $tags->append(': ')->prepend(' :'); //     $pq->find('div.content')->prepend('<br />')->prepend($tags); //       } echo $hentry; ?>
      
      





これは、できることのほんの一部です。

また、jQueryServerのようなものが付属しています。 本質的に、これはphpQueryと同じですが、クライアント側にあります。

デモ例

 <script type="text/javascript"> jQuery.serverConfig.url = '/phpQuery/jQueryServer/jQueryServer.php'; function demo() { $.server({ url: document.location.toString(), dataType: 'json' }) .find('li') .client(function(response){ $.each(response, function(k, li){ $('ul').append(li); }); }); } $(function(){ $('ul').append('<li>above LIs will be downloaded and appended below in 2 seconds...</li>'); setTimeout(demo, 2000); }); </script>
      
      





このオプションは非常に実用的であり、PHPコードを記述することなく、数秒で複数のサイトのコンテンツを解析できます。

関連資料


Googleコード

公式ブログ



次の記事に興味がある場合は、許可されたユーザーのみが利用できるサイトの解析を検討したいと思います(もちろん、キャプチャはありません)。 はい、phpQueryでもこれを行うことができますが、Zend Frameworkの助けが必要です。



All Articles