数日前に小説を連載するためのプログラムを作りました。更新の手間が怖かったので、八路中国語ネットワークから情報を収集するためにコレクターを作成しました。機能は比較的簡単で、ルールはありません。カスタマイズされていますが、一般的なアイデアはその中に含まれています。 カスタマイズ ルールは独自に拡張できます。
PHP をコレクターとして使用するには、主に file_get_contents() と preg_match_all() の 2 つの関数を使用します。前者は Web ページのコンテンツをリモートで読み取るために使用されますが、後者は Extract を使用する通常の関数です。必要な内容。
それでは関数の実装についてステップバイステップで説明していきます。
小説を収集しているため、最初に本のタイトル、著者、ジャンルを抽出する必要があります。その他の情報は必要に応じて抽出できます。
ここでの目標は「明王朝に戻って王子になる」ことです。まず参考文献ページを開いて、リンク: http://www.webjx.com/Book/3727/Index.aspx
さらにいくつかの本を開くと、本のタイトルの基本的な形式が http://www.webjx.com/Book/ISBN/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.webjx.com/Html/Book/18/3727/List.shtm これは参考文献ページと同じであり、次のルールがあることがわかります。 http://www .webjx.com/Html/Book/カテゴリ番号/書籍番号/List.shtm で見つかります。書籍番号は前に取得しています。ここで重要なのは、分類番号を見つけることです。分類番号は前の参考文献ページで確認できます。
preg_match_all("/Html/Book/[0-9]{1,}/[0-9]{1,}/List.shtm/is",$contents,$typeid); これでは不十分です。別のカット機能:PHPコードは以下の通りです
関数cut($string,$start,$end){
$message =explode($start,$string);
$message =explose($end,$message[1]);このうち、$string は切り取る内容、$start は開始位置、$end は終了位置です。分類番号を取り出します:
$end
= "List.shtm";
$typeid = Cut($typeid[0][0],$start,$end);
$typeid =explode( "/",$typeid);[/php]
$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 = Cut($title[0][$i],$tstart,$tend);
$array[$u] = $t;
}
$array 配列はすべてのチャプター アドレスです。この時点で、コレクターは半分完了しました。各チャプター アドレスをループして読み取り、内容を照合します。これは比較的単純なので、ここでは詳しく説明しません。さて、今日はここまでにしましょう。これほど長い記事を書くのは初めてなので、言葉の整理に問題があることは避けられません。