ホームページ > php教程 > php手册 > PHP を使用して単純なコンテンツ コレクター コードを作成する

PHP を使用して単純なコンテンツ コレクター コードを作成する

WBOY
リリース: 2016-06-13 12:30:48
オリジナル
1036 人が閲覧しました

コレクターは通常泥棒プログラムと呼ばれ、主に他の人の Web ページのコンテンツをキャプチャするために使用されます。コレクターの作成に関しては、正規表現の知識があれば、収集する Web ページをリモートで開き、必要なコンテンツに一致する正規表現を使用するだけで済みます。自分だけのコレクターを作ることができます。

数日前に小説を連載するためのプログラムを作りましたが、更新の手間が怖かったので、八路中国語ネットワークから情報を収集するためにコレクターを作成しました。機能は比較的簡単です。ルールはカスタマイズできませんが、内部の基本的な考え方は同じで、カスタム ルールは自分で拡張できます。

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

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

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

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

詳細 いくつかの本を開くと、本のタイトルの基本的な形式が http://www.86zw.com/Book/ISBN/Index.aspx であることがわかります。したがって、スタート ページを作成して、 <入力タイプ=テキスト名=番号>を定義し、収集が必要な書籍番号を入力するために使用されます。今後、収集が必要な書籍番号は $_POST['番号' の形式で受信できるようになります。 ]。書籍番号を受け取ったら、次に参考文献ページを作成します: $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); これでは十分ではなく、切り取り関数も必要です:
PHPコードは次のとおりです:

コードをコピー コードは次のとおりです:


function Cut($string,$start,$ end){
$message =explode($start,$string );
$message =explode($end,$message[1]);} $string は内容ですカットする場合、$start は開始位置、$end は終了位置です。分類番号を取得します:

$start = "Html/Book/";
$end
= "List.shtm"; 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 = Cut($url[0][$i],$ustart,$uend); >$t = カット($タイトル[0][$i],$tstart,$tend);
$array[$u] = $t>}



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

この記事は Webmaster Information Network からのものです 元のリンク: http://webdevelop.chinahtml.com/2/2007/php-119440156516960.shtml
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート