PHP は最も単純なクローラー プロトタイプを実装します
最も単純なクローラー モデルは次のようになります。初期 URL が与えられると、クローラーはコンテンツをプルダウンし、ページ内の URL を見つけ、これらの URL を開始点として使用してクロールを開始します。
以下は、PHP で実装された最も単純なクローラー モデルです。
- /**
- * クローラー プログラム -- プロトタイプ
- *
- * BookMoth 2009-02-21
- */
- /**
- * 指定された URL から HTML コンテンツを取得します
- *
- * @param string $url
- * @戻り文字列
- */
- 関数_getUrlContent($url){
- $handle = fopen($url, "r");
- if($handle){
- $content = stream_get_contents($handle,1024*1024);
- $content を返す;
- }その他{
- false を返す;
- }
- }
- /**
- * HTML コンテンツからリンクをフィルタリングします
- *
- * @param string $web_content
- * @return array
- */
- 関数_filterUrl($web_content){
- $reg_tag_a = '/'" ]*).*?>/';
- $result = preg_match_all($reg_tag_a,$web_content,$match_result);
- if($result){
- return $match_result[1];
- }
- }
- /**
- * 正しい相対パス
- *
- * @param string $base_url
- * @param array $url_list
- * @return array
- */
- function _reviseUrl($base_url,$url_list){
- $url_info = parse_url($base_url);
- $base_url = $url_info["スキーム"].'://';
- if($url_info["user"]&&$url_info["pass"]){
- $base_url .= $url_info["user"].":".$url_info["pass"]."@";
- }
- $base_url .= $url_info["ホスト"];
- if($url_info["ポート"]){
- $base_url .= ":".$url_info["port"];
- }
- $base_url .= $url_info["パス"];
- print_r($base_url);
- if(is_array($url_list)){
- foreach ($url_list as $url_item) {
- if(preg_match('/^http/',$url_item)){
- //已经是完全的url
- $result[] = $url_item;
- }その他 {
- //不完全なurl
- $real_url = $base_url.'/'.$url_item;
- $result[] = $real_url;
- }
- }
- $result を返す;
- }else {
- 戻る;
- }
- }
- /**
- * 爬虫
- *
- * @param string $url
- * @return array
- */
- 関数クローラー($url){
- $content = _getUrlContent($url);
- if($content){
- $url_list = _reviseUrl($url,_filterUrl($content));
- if($url_list){
- $url_list を返す;
- }else {
- 戻る;
- }
- }それ以外{
- 戻る;
- }
- }
- /**
- * テスト用のメインプログラム
- *
- */
- 関数 main(){
- $current_url = "http://hao123.com/";//最初のurl
- $fp_puts = fopen("url.txt","ab");//记录url列表
- $fp_gets = fopen("url.txt","r");//保存url列表
- してください{
- $result_url_arr = クローラー($current_url);
- if($result_url_arr){
- foreach ($result_url_arr as $url) {
- fputs($fp_puts,$url."rn");
- }
- }
- }while($current_url = fgets($fp_gets,1024));//不断获得url
- }
- メイン();
- ?>
もちろん、この爬虫類はまだ次の進化を遂げる必要があります:
1. より正確な URL リンクを貼り付けます。現在のリンクの形式が正しくない可能性があります。
2. 重複した URL リンクを削除できます。今日のクローラーは多くの反復作業を実行します。
3. 環状道路を怖がるクローラーを避ける。常に右折する車は環状 300 号線のみを走行でき、他の場所には行けません。
4. マルチスレッドまたはマルチプロセス。 PHP にはスレッドの概念がないため、それをシミュレートするにはシェルのようなものが必要になる場合があります。
5. ...漢字 2 の N 乗を省略します。
とにかく、考えてみてください~
http://blog.csdn.net/bookmoth/archive/2009/02/21/3916538.aspx より

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

Dreamweaver Mac版
ビジュアル Web 開発ツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。
