ホームページ  >  記事  >  バックエンド開発  >  PHP は通常、ドメイン名全体で画像を取得します

PHP は通常、ドメイン名全体で画像を取得します

WBOY
WBOYオリジナル
2016-07-25 08:50:05969ブラウズ
コードソース: 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';
  1. require __Home__.'include'.__Os__.'Capture。 class.php';
  2. $_cfg = array(
  3. 'site' => __Home__.'config'.__Os__.'capture.site.php',
  4. 'preg' => __Home__.'config'.__Os__. 'capture.preg.php',
  5. 'accompImg' => __Home__.'cache'.__Os__.'accompImg',
  6. 'overURL' => __Home__.'cache'.__Os__.'overURL'
  7. );
  8. $_parse = new Capture( $_cfg );
  9. $_parse->parseQuestUrl();
  10. ?>
  11. コードをコピー
  1. /**
  2. * メインクラス
  3. * @author pankai<530911044@qq.com>
  4. * @date 2013-08-10
  5. */
  6. class Capture {
  7. private static $_Config = array();
  8. private static $_CapSite = NULL;
  9. private static $_CapPreg = NULL;
  10. private static $_overURL = array();
  11. private $_mark = FALSE;
  12. private static $_markTime = 1;
  13. /**
  14. * メインクラスを初期化します: Capture
  15. * @param $_cfg array
  16. */
  17. public function __construct( &$_cfg ) {
  18. self::$_Config = &$_cfg;
  19. self::$_CapSite = require $_cfg['site'];
  20. self::$_CapPreg = require $_cfg['preg'];
  21. foreach( self::$_CapPreg as $_key => $_value ) {
  22. self::$_CapPreg[$_key] = str_replace( '_request_site', self::$_CapSite['request_site'], $_value );
  23. }
  24. self::import( 'ファイル.OperateFile' );
  25. if( file_exists( $_cfg['overURL'] ) && filesize( $_cfg['overURL'] ) > 0 ) {
  26. $_contents = OperateFile::readText( $_cfg['overURL'] , filesize( $_cfg['overURL'] ) );
  27. self::$_overURL = unserialize( $_contents );
  28. }
  29. self::import('pivotal.Pivotal');
  30. if( file_exists( $_cfg[ 'accompImg'] ) && filesize( $_cfg['accompImg'] ) > 0 ) {
  31. $_contents = OperateFile::readText( $_cfg['accompImg'], filesize( $_cfg['accompImg'] ) );
  32. Pivotal::$_accompImg = unserialize( $_contents );
  33. }
  34. }
  35. /**
  36. * クラスをロードし、Java プラグラマ (パッケージ) に従ってください: import com.jUnion.Capture
  37. * @param $_class
  38. */
  39. public static function import( $_class ) {
  40. require_once __Home__.'include'.__Os__.str_replace( ' .', __Os__, $_class ).'.class.php';
  41. }
  42. /**
  43. * Pivotal クラスのインスタンスを作成します
  44. * @param $_source
  45. */
  46. プライベート関数 getCapInstance( &$_source ) {
  47. $this->_mark = FALSE;
  48. $_Captal = new Pivotal( self::$_Config, $_source );
  49. $_tagA = $_Captal->parseUrl();
  50. $this->_mark = TRUE;
  51. return $_tagA;
  52. }
  53. /**
  54. * 一つずつ前に進みます
  55. * @param $_tagArr
  56. */
  57. プライベート関数roundTagA( &$_tagArr ) {
  58. if( $_tagArr == NULL ) {
  59. return;
  60. }
  61. $_tagArrLength = count( $_tagArr );
  62. for( $i = 0 ; $i if( is_array( $_tagArr[ $i ] ) ) {
  63. $this->roundTagA( $_tagArr[ $i ] );
  64. }
  65. else {
  66. if(stripos( $_tagArr[$i], self::$_CapSite['domain_name'] )
  67. === FALSE ) {
  68. continue;
  69. }
  70. if( in_array( $_tagArr[$i] ], self::$_overURL ) ) {
  71. 続き;
  72. }
  73. self::$_overURL[] = $_tagArr[$i];
  74. if( count( self::$_overURL ) % self::$_CapSite[' Serialize_url_size'] == 0 ) {
  75. OperateFile::setText( self::$_Config['overURL'], Serialize( self::$_overURL ) );
  76. }
  77. do {
  78. $_tagA = $this->getCapInstance ( Http::get( $_tagArr[$i] ) );
  79. sleep( self::$_CapSite['preform_page_time'] * self::$_markTime );
  80. if( $this->_mark === TRUE ) {
  81. self::$_markTime = self::$_CapSite['preform_page_time'];
  82. Break;
  83. }
  84. self::$_markTime *= 2;
  85. } while( true );
  86. /* メイン ページを解析して戻ります次のページ */
  87. $this->roundTagA( $_tagA );
  88. }
  89. }
  90. }
  91. public function parseQuestUrl() {
  92. self::import('http.Http');
  93. $_round_Arr = $this- >getCapInstance( Http::get( self::$_CapSite['request_url'] ) );
  94. $this->roundTagA( $_round_Arr );
  95. }
  96. }
  97. ?>
复制代


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。