数日前に小説を連載するためのプログラムを作りました。更新の手間が怖かったので、八路中国語ネットワークから情報を収集する方法でコレクターを作成しました。機能は比較的シンプルで、ルールはカスタマイズできません。ですが、一般的なアイデアはその中にあります。ルールは自分で拡張できます。
PHP をコレクターとして使用するには、主に file_get_contents() と preg_match_all() の 2 つの関数を使用します。前者は Web ページのコンテンツをリモートで読み取るために使用されますが、後者は Extract を使用する通常の関数です。必要な内容。
それでは関数の実装についてステップバイステップで説明していきます。
小説を収集しているため、最初に本のタイトル、著者、ジャンルを抽出する必要があります。その他の情報は必要に応じて抽出できます。
ここでの目標は「明王朝に戻って王子になる」です。まず参考文献ページを開いてください。リンク: 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() 関数を使用して参考文献ページを開きます。 $c 参考文献ページを開いてソース ファイルを表示し、「「明王朝に戻って王子になる」」を見つけます。抽出する本のタイトルです。本のタイトルを抽出するための正規表現: /(.*?)/ の場合は、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 コードは次のとおりです:
function Cut($string,$start,$end){
$message =explode($start,$string);
$message =explose($end,$message[1]);} $string は切り取られる内容、$start は開始位置、$end は終了位置です。カテゴリ番号を取得します:
$start = "Html/Book/";
$end
= "List.shtm"; $ 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 配列はすべてのチャプターのアドレスです。この時点で、コレクターは各チャプターのアドレスをループして読み取って、内容を照合するだけです。これは比較的単純なので、ここでは詳しく説明しません。さて、今日はこれで終わりにしましょう。これほど長い記事を書くのは初めてなので、言葉の整理に問題があることは避けられません。
上記では、PHP を使用して簡単なコンテンツ コレクターを作成するための dede コレクターの原理分析を紹介しました。これは、PHP チュートリアルに興味のある友人の参考になれば幸いです。