コードソース: jUnion
適用プラットフォーム: Windows、Linux (Ubuntu)、php-5.2.5+、Apache 機能: サイト全体の画像をキャプチャする PHP によるカールプラグインの開発はまだありません 。 設定: config ディレクトリの下 domain_name: ドメイン名 (デフォルト: bizhibar.com) request_site: Web サイトの URL (デフォルト: http://www.bizhibar.com/) request_url: Web サイトのどのページから開始するか (デフォルト: http://www .bizhibar.com/) accept_type: 画像の種類 (デフォルト: gif、bmp、png、ico、jpg、jpeg) save_path: 画像の保存パス (デフォルト: savefiles/) Partition_name: 画像の保存ディレクトリ名のプレフィックス (デフォルト: img_ ) dir_file_limit: 各ディレクトリで許可されるファイル数 (デフォルト: 100) Serialize_img_size: キャッシュ ディレクトリの accompImg ファイルにキャッシュされる前に読み取られる画像アドレスの数 これらのアドレスは無視されます。次回はクロールを続けます。 (デフォルト: 30) Serialize_url_size: Serialize_url_size と同じで、キャッシュ ディレクトリの下の overURL にキャッシュする前に読み取られたリンク アドレスの数です。これらのアドレスは、次回クロールを続行するときに無視されます。 (デフォルト: 10)
注: 新しい質問や改善が必要な領域がある場合は、フィードバックやアドバイスをお待ちしています。
set_time_limit(0); require dirname(__FILE__).DIRECTORY_SEPARATOR.'include'.DIRECTORY_SEPARATOR.'Capture.const.php';- require __Home__.'include'.__Os__.'Capture。 class.php';
- $_cfg = array(
- 'site' => __Home__.'config'.__Os__.'capture.site.php',
- 'preg' => __Home__.'config'.__Os__. 'capture.preg.php',
- 'accompImg' => __Home__.'cache'.__Os__.'accompImg',
- 'overURL' => __Home__.'cache'.__Os__.'overURL'
- );
-
- $_parse = new Capture( $_cfg );
- $_parse->parseQuestUrl();
-
- ?>
-
-
- コードをコピー
- /**
- * メインクラス
- * @author pankai<530911044@qq.com>
- * @date 2013-08-10
- */
- class Capture {
- private static $_Config = array();
-
- private static $_CapSite = NULL;
- private static $_CapPreg = NULL;
-
- private static $_overURL = array();
-
- private $_mark = FALSE;
- private static $_markTime = 1;
- /**
- * メインクラスを初期化します: Capture
- * @param $_cfg array
- */
- public function __construct( &$_cfg ) {
- self::$_Config = &$_cfg;
-
- self::$_CapSite = require $_cfg['site'];
- self::$_CapPreg = require $_cfg['preg'];
-
- foreach( self::$_CapPreg as $_key => $_value ) {
- self::$_CapPreg[$_key] = str_replace( '_request_site', self::$_CapSite['request_site'], $_value );
- }
-
- self::import( 'ファイル.OperateFile' );
- if( file_exists( $_cfg['overURL'] ) && filesize( $_cfg['overURL'] ) > 0 ) {
- $_contents = OperateFile::readText( $_cfg['overURL'] , filesize( $_cfg['overURL'] ) );
- self::$_overURL = unserialize( $_contents );
- }
-
- self::import('pivotal.Pivotal');
- if( file_exists( $_cfg[ 'accompImg'] ) && filesize( $_cfg['accompImg'] ) > 0 ) {
- $_contents = OperateFile::readText( $_cfg['accompImg'], filesize( $_cfg['accompImg'] ) );
- Pivotal::$_accompImg = unserialize( $_contents );
- }
-
- }
- /**
- * クラスをロードし、Java プラグラマ (パッケージ) に従ってください: import com.jUnion.Capture
- * @param $_class
- */
- public static function import( $_class ) {
- require_once __Home__.'include'.__Os__.str_replace( ' .', __Os__, $_class ).'.class.php';
- }
-
- /**
- * Pivotal クラスのインスタンスを作成します
- * @param $_source
- */
- プライベート関数 getCapInstance( &$_source ) {
- $this->_mark = FALSE;
-
- $_Captal = new Pivotal( self::$_Config, $_source );
- $_tagA = $_Captal->parseUrl();
-
- $this->_mark = TRUE;
-
- return $_tagA;
- }
-
- /**
- * 一つずつ前に進みます
- * @param $_tagArr
- */
- プライベート関数roundTagA( &$_tagArr ) {
- if( $_tagArr == NULL ) {
- return;
- }
- $_tagArrLength = count( $_tagArr );
- for( $i = 0 ; $i if( is_array( $_tagArr[ $i ] ) ) {
- $this->roundTagA( $_tagArr[ $i ] );
- }
- else {
- if(stripos( $_tagArr[$i], self::$_CapSite['domain_name'] )
- === FALSE ) {
- continue;
- }
- if( in_array( $_tagArr[$i] ], self::$_overURL ) ) {
- 続き;
- }
- self::$_overURL[] = $_tagArr[$i];
- if( count( self::$_overURL ) % self::$_CapSite[' Serialize_url_size'] == 0 ) {
- OperateFile::setText( self::$_Config['overURL'], Serialize( self::$_overURL ) );
- }
- do {
- $_tagA = $this->getCapInstance ( Http::get( $_tagArr[$i] ) );
- sleep( self::$_CapSite['preform_page_time'] * self::$_markTime );
- if( $this->_mark === TRUE ) {
- self::$_markTime = self::$_CapSite['preform_page_time'];
- Break;
- }
- self::$_markTime *= 2;
- } while( true );
- /* メイン ページを解析して戻ります次のページ */
- $this->roundTagA( $_tagA );
- }
- }
- }
-
- public function parseQuestUrl() {
- self::import('http.Http');
- $_round_Arr = $this- >getCapInstance( Http::get( self::$_CapSite['request_url'] ) );
- $this->roundTagA( $_round_Arr );
- }
- }
- ?>
复制代
|