ホームページ >バックエンド開発 >PHPチュートリアル >PHPコレクションプログラムの原理分析_PHPチュートリアル
必要に迫られて、いつものように、インターネットでたくさんのチュートリアルを見つけてコピーしましたが、インターネット上のチュートリアルはどれも大したものではありませんでした。それらは本当に役に立ちました。数日間真剣に考えた結果、ようやくその背後にある理由がわかりました。ここに書いて専門家に訂正してもらいましょう。
コレクション プログラムのアイデアは非常に単純で、最初にページ (通常はリスト ページ) を開き、そこに含まれるすべてのリンクのアドレスを取得し、次にリンクを 1 つずつ開いて何を探すかということです。見つかった場合は、データベースまたは他の処理に入れます。非常に簡単な例で説明しましょう。
まず、コレクション ページ (通常はリスト ページ) を決定します。ここでのターゲットは http://www.BkJia.com/article/11/index.htm です。これはリストページであり、私たちの目的はこのリストページにあるすべての記事を収集することです。最初のステップは、リスト ページを開いてそのコンテンツをプログラムに組み込むことです。一般に、fopen または file_get_contents の 2 つの関数が使用されます。ここでは例として fopen を使用します。どうやって開けるのですか?非常に単純です: $source=fopen("[url=http://www.BkJia.com/article/11/index.htm",]http://www.BkJia.com/article/11/index.htm" ,r[/url]); 実際、取得した $source は処理可能なテキストではなく、リソースであるため、関数 fread を使用して変数に読み込まれます。実際に編集可能なテキストになります。例:
$content=fread($source,99999); 次の数字はバイト数を示します。大きい値を入力してください。 file_put_contents を使用して $content をテキスト ファイルに書き込みます。内部のコンテンツが実際には Web ページのソース コードであることがわかります。 Web ページのソース コードを取得した後、内部の記事リンク アドレスを分析する必要があります。ここでは正規表現を使用します (推奨される正規表現のチュートリアル (http://www.BkJia.com/article/7/all/545.1))。 html)]。ソース コードを見ると、内部の記事のリンク アドレスはすべて次のようになっていることがわかります
正規表現を記述できるようになりました。 $count=preg_match_all("/
配列 $art_list[1][$s] には記事のリンクアドレスが含まれます。そして$art_list[2][$s]にはある記事のタイトルが入っています。この時点で、戦いは半分終わったと考えられます。
次に、for ループを使用して各リンクを順番にヒットし、タイトルと同じ方法でコンテンツを取得します。上記はオンラインで見つけたチュートリアルと似ていますが、この for ループに関してはオンライン チュートリアルはひどいもので、最初はループを助けるために js を使用していました。 、または使用された例を示します。これが最初に私がやったことです:
for($i=0;$i
真ん中はコンテンツ収集部分なので省略
1ページ集めたので、次のページも集めなければなりません
ただし、fopen を使用してリンクを開くと機能しません。リクエストが失敗したか何かで、js では機能しませんでした。最終的に、この echo ""; を使用する必要があることがわかりました。ここで、aa.php は私たちのものです。プログラムのファイル名と ID の後の番号は、ループを実装し、複数のページを収集するのに役立ちます。これが真のサイクルへの鍵です
}
私の頭は少し不快で、文章は少し乱雑なので、専門家から見ればこれは大したことではないかもしれませんが、私のような初心者にとっては非常に役立ちます。