ホームページ  >  記事  >  バックエンド開発  >  PHP を使用して単純なコンテンツ コレクターを作成する原理分析_PHP チュートリアル

PHP を使用して単純なコンテンツ コレクターを作成する原理分析_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:49:32756ブラウズ

数日前に小説を連載するためのプログラムを作りました。更新の手間が怖かったので、八路中国語ネットワークから情報を収集する方法でコレクターを作成しました。機能は比較的シンプルで、ルールはカスタマイズできません。ですが、一般的なアイデアはその中にあります。ルールは自分で拡張できます。

PHP をコレクターとして使用するには、主に file_get_contents() と preg_match_all() の 2 つの関数を使用します。前者は Web コンテンツをリモートで読み取るためのものですが、後者は通常の関数です。必要なコンテンツを抽出します。

それでは関数の実装について順を追って説明していきます。

小説を収集しているため、最初に本のタイトル、著者、ジャンルを抽出する必要があります。その他の情報は必要に応じて抽出できます。

ここでの目標は「明王朝に戻って王子になる」です。まず参考文献ページを開き、リンク: http://www.86zw.com/Book/3727/Index.aspx

いくつか開いたら、さらに多くの本を参照すると、その本の名前の基本的な形式は http://www.86zw.com/Book/书号/Index.aspx なので、スタート ページを作成して 収集が必要な情報を入力します。今後、収集が必要な書籍番号を $_POST['number'] の形式で受け取ることができます。書籍番号を受け取ったら、次に参考文献ページを作成します: $url=http://www.86zw.com/Book/$_POST['number']/Index.aspx もちろん、これはです。簡単に説明すると、$_POST['number'] の正当性を実際に作成するときに確認するのが最善です。

URLを構築したら、書籍情報の収集を開始できます。 file_get_contents() 関数を使用して書誌ページ $content=file_get_contents($url) を開き、書誌ページのすべてのコンテンツを読み取れるようにします。次のステップは、本のタイトル、著者、ジャンルなどの情報を照合することです。ここでは本のタイトルを例に挙げますが、それ以外はすべて同じです。 参考文献ページを開いてソース ファイルを表示し、「「明朝に戻って王子になる」」を見つけます。これは、対象となる本のタイトルです。抽出された。本のタイトルを抽出するための正規表現: /(.*?)/ の場合は、preg_match_all() 関数を使用して本のタイトルを抽出します: preg_match_all("/< span class ="newstitle">(.*?)/is",$contents,$title); このように、$title[0][0] の内容が必要なタイトルになります ( preg_match_all 関数の使用方法は、Baidu にアクセスして確認できます。ここでは詳しく説明しません)。書籍情報を取得したら、次のステップは章のコンテンツを取得することです。章のコンテンツを取得するには、まず各章のアドレスを見つけて、リモートで章を開き、通常のルールを使用してコンテンツを取得します。それをデータベースに保存するか、HTML 静的ファイルを直接生成します。これは章リストのアドレスです: http://www.86zw.com/Html/Book/18/3727/List.shtm これは参考文献ページと同じであり、次のルールがあることがわかります。 http://www.86zw.com/Html/Book/分類番号/書籍番号/List.shtm で見つかります。書籍番号は事前に取得されています。ここで重要なのは、分類番号を見つけることです。分類番号は、

preg_match_all("/Html/Book/[0-9]) で見つけることができます。 {1,}/[0- 9]{1,}/List.shtm/is",$contents,$typeid); これだけでは不十分です。cut 関数も必要です:
PHP コードは次のとおりです:

関数カット($string,$start,$end) {
$message =explose($start,$string);
$message =explose($end,$message[1]);ここで、$string は切り取られるコンテンツ、$start は開始位置、$end は終了位置です。分類番号を取得します:

$start = "Html/Book/";
$end
= "List.shtm";
$typeid = Cut($typeid[0][0],$start,$end);
$typeid =explode("/",$typeid);[/php]

このように、$typeid[0]が探している分類番号になります。次のステップは、章リストのアドレスを構築することです: $chapterurl = http://www.86zw.com/Html/Book/.$typeid[0]/$_POST[‘number’]/List.shtm。これで各章のアドレスがわかります。メソッドは次のとおりです:

$ustart = """;
$uend
= """;
//t はタイトルの略称を表します
$tstart = ">";
$tend
= "< ";
/ /パスを取得します。例: 123.shtm, 2342.shtm, 233.shtm
preg_match_all("/"[0-9]{1,}.(shtm)"/is",$chapterurl, $url);
/ /タイトルを取得します。例: 第 1 章 善良な人々の 9 つの世界
preg_match_all("//is",$ file,$title);
$count = count($url[0]);
for($i=0;$i{
$ u = カット($url[0] [$i],$ustart,$uend);
$t = カット($title[0][$i],$tstart,$tend); ] = $t;
}

$array 配列はすべてのチャプター アドレスです。この時点で、コレクターは、各チャプター アドレスをループして読み取り、内容を照合するだけです。これは比較的単純なので、ここでは詳しく説明しません。さて、今日はこれで終わりにしましょう。これほど長い記事を書くのは初めてなので、言葉の整理に問題があることは避けられません。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/319510.html技術記事先日、小説を連載するためのプログラムを作りました。更新の手間が怖かったので、八路中国語ネットワークから情報を収集するためにコレクターを作成しました。機能は比較的簡単で、ルールはありません。カスタマイズされていますが、一般的なアイデアは...