検索

今日、私は捜狐ホームページのニュースセクションをクロールするよう割り当てられました。元々はとても簡単な事だったのですが、意外にも捜狐のページに行くとキャプチャーしたコードが常に文字化けしていて、どう転送しても動作しませんでした。徹底的に調査する必要があり、多くのことを学んだので、共有するために書き留めました。

1.php収集プログラムとは何ですか?

2.なぜ集めるのですか?

3. 何を集めますか?

4. 集め方は?

5. 収集アイデア

6. 収集プログラムのサンプル

PHP 収集プログラムとは何ですか?

php 収集プログラムは、php 泥棒とも呼ばれ、主にインターネット上の Web ページ内の特定のコンテンツを自動的に収集するために使用されます。これは、php 言語で書かれた Web プログラムであり、php をサポートするプラットフォーム上で実行されます。 「自動収集」について話すとき、Baidu Google や検索エンジンの機能を思い浮かべるかもしれません。 php コレクション プログラムも同様の作業を行います。

なぜ集めるのですか?

インターネットは急速に発展しており、Web データは日々幾何学的に増加しています。この膨大なデータに直面して、Web サイト管理者として必要な情報を収集するにはどうすればよいでしょうか?特に 1 つまたは複数の同様の Web サイトの場合、Web サイトのコンテンツを充実させるために多くの情報が必要になります。コピーして貼り付けるだけで済みますか?ウェブマスターとして、オリジナル コンテンツの作成に多くの時間を費やし、インターネットの情報量全体の発展スピードに遅れを取らなければならないのでしょうか?これらの問題に対する解決策はただ 1 つ、収集です。このようなプログラムがあれば、Web サイトで必要な特定のコンテンツを自動または半自動的に収集し、Web サイト上の情報をリアルタイムで更新できるようになります。それはあなたが夢見ていることではないでしょうか?ここで収集プログラムが登場します。

何を集めますか?

どのような種類のウェブサイトを作成するかによって異なります。写真サイトを構築する場合は写真を収集し、音楽サイトを構築する場合は MP3 を収集し、ニュースを収集します。すべては、Web サイトのコンテンツ構造のニーズによって異なります。何を収集するかを決定した後でのみ、対応する収集プログラムを作成できます。

集め方は?

通常は回収手続きが対象となります。つまり、対象となる Web サイトを用意し、必要なコンテンツを含む Web サイトをいくつか収集し、それぞれの HTML コードを分析して規則的なものを見つけ、収集したい特定のコンテンツに基づいて PHP コードを記述する必要があります。必要なものを集めたら、必要な保管方法を選択できます。たとえば、HTML ページを直接生成したり、さらに処理するためにデータベースに保存したり、後で使用するために特定の形式で保存したりできます。

コレクションのアイデア

コレクション プログラムのアイデアは非常にシンプルで、次の手順に大別できます。

1. リモート ファイルのソース コードを取得します (file_get_contents または fopen を使用します) 2. を分析します。必要なコンテンツを取得するためのコード (ここでは、通常はページングを取得するために通常のマッチングが使用されます)。

3. ルートから取得したコンテンツをダウンロードして保存します。

ここでの 2 番目のステップは、数回繰り返す必要がある場合があります。たとえば、最初にページング アドレスを分析し、次に内部ページのコンテンツを分析して、必要なものを取得する必要があります。

/* ***リモート ファイルのソース コードを取得するためによく使用される 3 つの方法** */
/* **方法 1、fopen()、stream_context_create() メソッド*** */ $ opts = array(

'http'=> array(

'method'=>"GET",
'header'=>"受け入れ言語: enrn" .
"Cookie: foo=barrn"
)
);
$context = stream_context_create( $opts);
$fp = fopen('http://www.example.com', 'r', $context); ($fp);

/******方法 2、ソケット*******/
function get_content_by_socket($url, $host){
$fp = fsockopen($host, 80) or die("Open ". $url ." failed");
$header = "GET /".$url ." HTTP/1.1rn";
$header .= "Accept: */*rn";
$header .= "Accept-Language: zh-cnrn";
$header .= " Accept-Encoding: gzip, deflatern";
$header .= "User-Agent: Mozilla/4.0 (互換性; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; InfoPath.1; .NET CLR 2.0.50727)rn";
$header .= 「ホスト: 」。 $host ."rn";
$header .= "接続: キープアライブン";
//$header .= "Cookie: cnzz02=2; rtime=1; ltime=1148456424859; cnzz_eid=56601755-rnrn";
$header .= "接続: Closernrn";
fwrite($fp, $header);
while (!feof($fp)) {
$contents .= fgets($fp, 8192);
}
fclose($ fp);
return $contents;
}

/******メソッド 3、file_get_contents ()、stream_context_create() メソッド 3*******/
$opts = array(
'http'=>array(
'method'=>"GET",
'header' =>"Content-Type: text/html; charset=utf-8"
)
);        
$context = stream_context_create($opts);        
$file = file_get_contents('http://www.sohu.com/', false, $context);        

/******方法 4、PHP の cURL http://www.chinaz.com/program/2010/0119/104346.shtml*******/
$ch = curl_init();
// 2.URLを含む設定
curl_setopt($ch, CURLOPT_URL, "http://www.sohu.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch,CURLOPT_HTTPHEADER,array ("Content-Type: text/xml; charset=utf-8","期待値: 100-Continue"));
// 3. 実行并获取HTML文档内容
$output = curl_exec($ch);
var_dump($output);
// 4. 释放curl句柄
curl_close($ch);

/*注意
1.file_get_contents と fopen を使用する場合は、必ず空の許可を有効にしてください。方法: php.ini を設定し、allow_url_fopen = オン、allow_url_fopen を開くと、fopen と file_get_contents の両方を使用してプログラム ファイルを開くことはできません。 方法:windows で php.ini を変更し、extension=php_curl.dll の先頭の分数を削除し、ssleay32.dll と libeay32.dll を C:/WINDOWS/system32 にコピーする必要があります。Linux では
*/
?>

採集范例序列

/* 画像のダウンロード関数*/
function getimg($url, $filename){
/* 画像の URL が空かどうかを判断し、空の場合は関数を停止します*/
if( $url= =""){
return false;
}
/* 画像の拡張子を取得し、変数 $ext*/ に格納します
$ext= strrchr( $url,".")
/* かどうかを判定します。は合法的な画像ファイルです*/
if( $ext!=".gif" && $ext!=".jpg"){
return false
}
/* 画像を読み取ります*/
$img= file_get_contents( $ url);
/* 指定されたファイルを開きます*/
$fp=@ fopen( $filename. $ext,"a")
/* 指定されたファイルに画像を書き込みます*/
fwrite( $fp, $img );
/* ファイルを閉じる* /
fclose( $fp)
/* 画像の新しいファイル名を返す*/
return $filename.

コードを表示

/* *
* 画像コレクション php プログラム
*
* Copyright(c) 2008 by Xiaochao (ccxxcc) All Rights Reserved
*
* 著者に連絡するには、{@link mailto までご連絡ください。 :ucitmc@163.com}
*
* @author ccxxcc
* @version $Id: {filename},v 1.0 {time} $
* @package system
*/

set_time_limit(0)
/* *
* ファイル書き込み
* @param string $file ファイルパス
* @param string $str コンテンツ書き込み
* @param char $mode 書き込みモード
*/
function wfile( $file, $str, $mode= 'w' )
{
$oldmask = @ umask(0);
$fp = @ fopen( $file, $mode);
if(! $fp)
{
false を返します。
}
else
{
@ fwrite( $fp, $str);
@ umask( $oldmask)
関数 savetofile( $ path_get, $ path_save)
{
style = 'color:red'> $ path_getは取得できません。 ;
        }
         else
                 return -1;
}

function getExt( $path)
{
         $path =  pathinfo( $path);
         return  strtolower( $path['extension']);
}

/* *
* 按指定路径生成目录
*
* @param    string     $path    路径
*/
function mkDirs( $path)
{
     $adir =  explode('/', $path);
     $dirlist = '';
     $rootdir =  array_shift( $adir);
     if(( $rootdir!='.'|| $rootdir!='..')&&! file_exists( $rootdir))
    {
        @ mkdir( $rootdir);
    }
     foreach( $adir  as  $key=> $val)
    {
         if( $val!='.'&& $val!='..')
        {
             $dirlist .= "/". $val;
             $dirpath =  $rootdir. $dirlist;
             if(! file_exists( $dirpath))
            {
                @ mkdir( $dirpath);
                @ chmod( $dirpath,0777);
            }
        }
    }
}

/* *
* 从文本中取得一维数组
*
* @param    string     $file_path    文本路径
*/
function getFileListData( $file_path)
{
     $arr = @ file( $file_path);
     $data =  array();
     if( is_array( $arr) && ! empty( $arr))
    {
         foreach( $arr  as  $val)
        {
             $item =  trim( $val);
             if(! empty( $item))
            {
                 $data[] =  $item;
            }
        }
    }
     Return  $data;
}

// 采集开始

//传入自己的需要采集的图片url列表文本文件 每个图片url写一行
$url_file =  isset( $_GET['file'])&&! empty( $_GET['file'])? $_GET['file']: null;
$txt_url = "txt/". $url_file;

$urls =  array_unique(getFileListData( $txt_url));
if( empty( $urls))
{
         echo('

无链接地址
');
die();
$save_url = "images/". date("y_m_d", time())."/"; // 日付ごとにフォルダーを作成します
$ i = 1; if($ urls)&& count($ urls))。 '
finish
');





上記の方法に加えて、Snoopy を使用することもできます。




Snoopy とは何ですか? (スヌーピーをダウンロード)

Snoopy は、Web ページのコンテンツを取得してフォームを送信するタスクを完了するために使用される php クラスです。

スヌーピーのいくつかの機能: * ウェブページのコンテンツをクロールするのに便利

* ウェブページのテキストコンテンツをクロールするのに便利 (HTML タグを削除)

* ウェブページのリンクをクロールするのに便利

* サポートプロキシホスト

* 基本的なユーザー名/パスワード検証をサポート

* user_agent、リファラー (ソース)、Cookie およびヘッダーコンテンツ (ヘッダーファイル) の設定をサポート

* ブラウザーのリダイレクトをサポートし、リダイレクトの深さを制御できます

* のリンクを変換できますWeb ページ 高品質の URL に展開 (デフォルト)

* データを送信して戻り値を取得するのに便利

* トラッキング HTML フレームワークをサポート (v0.92 で追加)

* リダイレクト時の Cookie の受け渡しをサポート (v0.92 で追加) )

コレクション体験

あなたの個人的なコレクション体験を共有してください:

1. ホットリンクから保護されているサイトを使用しないでください 実際、出所を偽ることはできますが、そのようなコレクションのコストはかかります。サイトの高さが高すぎます

2. 収集 ウェブサイトを最速にするには、ローカルで収集するのが最善です

3. 収集するときは、最初にデータの一部をデータベースに保存し、次のデータを待つことができることがよくあります後の処理ステップ。

4. 収集時にエラーを処理する必要があります。収集が 3 回失敗した場合は、通常はスキップします。以前は、コンテンツを選択するのに迷ってしまうことがよくありました。

5. 倉庫に保管する前に適切な判断を下し、コンテンツの合法性をチェックし、不要な文字列をフィルタリングする必要があります。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
セッションを保存するためにデータベースを使用することの利点は何ですか?セッションを保存するためにデータベースを使用することの利点は何ですか?Apr 24, 2025 am 12:16 AM

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでカスタムセッション処理をどのように実装しますか?PHPでカスタムセッション処理をどのように実装しますか?Apr 24, 2025 am 12:16 AM

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

セッションIDとは何ですか?セッションIDとは何ですか?Apr 24, 2025 am 12:13 AM

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

ステートレス環境(APIなど)でセッションをどのように処理しますか?ステートレス環境(APIなど)でセッションをどのように処理しますか?Apr 24, 2025 am 12:12 AM

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。

セッションに関連するクロスサイトスクリプティング(XSS)攻撃からどのように保護できますか?セッションに関連するクロスサイトスクリプティング(XSS)攻撃からどのように保護できますか?Apr 23, 2025 am 12:16 AM

セッション関連のXSS攻撃からアプリケーションを保護するには、次の測定が必要です。1。セッションCookieを保護するためにHTTPonlyとセキュアフラグを設定します。 2。すべてのユーザー入力のエクスポートコード。 3.コンテンツセキュリティポリシー(CSP)を実装して、スクリプトソースを制限します。これらのポリシーを通じて、セッション関連のXSS攻撃を効果的に保護し、ユーザーデータを確保できます。

PHPセッションのパフォーマンスを最適化するにはどうすればよいですか?PHPセッションのパフォーマンスを最適化するにはどうすればよいですか?Apr 23, 2025 am 12:13 AM

PHPセッションのパフォーマンスを最適化する方法は次のとおりです。1。遅延セッション開始、2。データベースを使用してセッションを保存します。これらの戦略は、高い並行性環境でのアプリケーションの効率を大幅に改善できます。

session.gc_maxlifetime構成設定とは何ですか?session.gc_maxlifetime構成設定とは何ですか?Apr 23, 2025 am 12:10 AM

thesession.gc_maxlifettinginttinginphpdethinesthelifsessessiondata、setinseconds.1)it'sconfiguredinphp.iniorviaini_set()。 2)AbalanceSneededToAvoidPerformanceIssues andunexpectedLogouts.3)php'sgarbagecollectionisisprobabilistic、影響を受けたBygc_probabi

PHPでセッション名をどのように構成しますか?PHPでセッション名をどのように構成しますか?Apr 23, 2025 am 12:08 AM

PHPでは、session_name()関数を使用してセッション名を構成できます。特定の手順は次のとおりです。1。session_name()関数を使用して、session_name( "my_session")などのセッション名を設定します。 2。セッション名を設定した後、session_start()を呼び出してセッションを開始します。セッション名の構成は、複数のアプリケーション間のセッションデータの競合を回避し、セキュリティを強化することができますが、セッション名の一意性、セキュリティ、長さ、設定タイミングに注意してください。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。