0

ある種の Digg サイトを構築しており、限られたテキスト (2 ~ 3 文) を自動的に取得したいと考えています。記事の最後の 3 文でも構いません。現時点では、問題なく Web ページのコンテンツを取得していますが、いくつかの文を取得するためにユニバーサル スクリプトを作成したいと考えています。コンテンツを取得する Web サイトごとにカスタム スクリプトを作成することは避けたいと考えています。

テキストブロックをドットで見つけることを考えていました。ドットの周りの単語を取得するよりも、近い範囲でドットを見つけること。それは生の考えです。誰かがテキストの一部だけを抽出する方法を他に考えていますか?

完全なコンテンツをスクレイピングしたくありません。

ありがとうございました。

4

1 に答える 1

1

マークアップと垂直方向の空白が少ないドキュメントの大部分を探すことができます。ページのソースをダウンロードし、 を使用してマークアップを取り除きstrip_tags()ます。次に、正規表現を使用して、たとえば 5 つの連続する文を検索できます。

スクリプトの例を次に示します。含まれていないクラス(curl_multi関数の抽象化)を使用していますが、そのクラスはあなたの質問にはあまり関係ありません。

<?php

require_once("./../MultipleRequester.php");

$requester = new MultipleRequester();

$requester->addGetRequest( 'test', 'http://www.businessweek.com/news/2011-08-24/gold-tumbles-most-since-march-2008-as-demand-for-haven-wanes.html');
$requester->execute();
$content = $requester->getContent('test');

$plainText = strip_tags( $content );

$search = preg_match('/(\h{0,2}\v{0,2}\h{0,2}[A-Z]{1}[A-z0-9 ,\'")(.$]{10,1000}\.){2,5}/', $plainText, $matches);

if( $search )
    print trim($matches[0]);
else
    print "Could not extract anything.";

print "\n\n";
?>

これは以下を出力します:

米連邦準備制度理事会(FRB)のベン・S・バーナンキ議長が今週、中央銀行は経済にさらなる刺激を与える用意があると発言するかどうかについての憶測の中で、ドルは6つの主要通貨のバスケットに対して上昇した。中央銀行は今週、ワイオミング州ジャクソンホールで会合を開き、米国の景気回復に対処します。

コンテンツを頻繁にマークアップするサイトでは、まだ問題が発生する可能性があります。特に空白に対して、正規表現をより寛大にしたい場合があります。

正規表現は少し面倒ですが、調整したり、独自のものを作成したりできます。

于 2011-08-24T20:28:11.520 に答える