Webページのキャプチャ

WBOY
リリース: 2016-07-25 08:49:44
オリジナル
1168 人が閲覧しました
    header('Content-Type:text/html;charset=utf-8');
  1. /**
  2. * 写真を取得するためのクラス
  3. * @author tangpan
  4. */
  5. class download_image {
  6. public $_save_path = NULL; /画像保存ロード
  7. public $_limit_size = NULL; //画像のサイズを制限する
  8. public static $_img_url_old = array(); //キャプチャした画像のリンクアドレスを保存する
  9. public static $_a_page_url = array();クロールされたページ
  10. public function __construct( $_save_path, $_limit_size) {
  11. $this->save_path = $_save_path;
  12. $this->_limit_size = $_limit_size;
  13. }
  14. public function get_all_page_image( $site_url ) {
  15. if ( $site_url == '' ) {
  16. return false;
  17. }
  18. if ( ! in_array( $site_url, self::$_a_page_url ) ) { //現在のページがクロールされたかどうかを判断します
  19. self::$ _a_page_url[ ] = $site_url; //ハイパーリンクを静的配列に保存します
  20. } else {
  21. return; //クロールされている場合は、ジャンプします
  22. }
  23. $this->down​​load_the_page_image( $site_url );
  24. $content = @ file_get_contents($site_url);
  25. $a_page_url = "|]+href=['" ]?([^ '"?]+)['" >]|U";
  26. $ all_url = array();
  27. preg_match_all( $a_page_url, $content, $all_url, PREG_SET_ORDER );
  28. if ( $all_url != NULL ) {
  29. foreach( $all_url as $key => $val ) {
  30. /**
  31. * 無限ループに入らないようにするための静的ハイパーリンク
  32. * 現在のページのリンク表現 (''、'#'、'/') を終了します
  33. */
  34. if (trim($val[1]) != '' && ! in_array( $val[1], self::$_a_page_url ) && ! in_array( $val[1], array('# ' ,'/',$site_url) ) ) {
  35. self::$_a_page_url[] = $val[1]; //修飾されたハイパーリンクを静的配列に書き込みます
  36. }
  37. }
  38. }
  39. if ( self ::$_a_page_url ! = NULL ) {
  40. foreach( self::$_a_page_url as $keys => $vals ) {
  41. if ( strpos( $vals, 'http://' ) === false ) { // ハイパーリンクが張られていない場合http://が含まれるため、直接アクセスできません
  42. // 画像リンクアドレスが相対アドレスの場合、アドレスを再構築します
  43. $a_domain_url = substr( $site_url, 0, strpos( $site_url, '/',8 ) + 1 );
  44. $a_img_url = $a_domain_url.$vals;
  45. }
  46. //再帰呼び出し、各ハイパーリンク ページにアクセスします
  47. $this->get_all_page_image( $a_img_url );
  48. }
  49. }
  50. }
  51. /**
  52. * 現在のページの下にあるすべての画像リンクをダウンロードします
  53. * @param $site_url <ページアドレス>
  54. */
  55. public function download_the_page_image( $site_url ) {
  56. // 現在のリンク アドレス ページのすべてのコンテンツを取得します
  57. $img_pattern = NULL;
  58. $content = @file_get_contents( $site_url );
  59. $img_pattern = "|< ; img[^>]+src=['" ]?([^ '"?]+)['" >]|U";
  60. //
  61. 内のすべての画像リンクにグローバルに一致しますimg_out = array();
  62. preg_match_all( $img_pattern, $content, $img_out, PREG_SET_ORDER );
  63. echo '

    ' .'Pictures< /h1> ';

  64. //print_r($img_out[1]);
  65. foreach( $img_out as $key => $val ) {
  66. //echo htmlspecialchars($val[1]).'
    ' ;
  67. $this->save_one_image( $site_url, $val[1]);
  68. }
  69. }
  70. public function save_one_image( $site_url, $img_url ) {
  71. if ( strpos( $img_url, 'http:// ' ) === false ) {
  72. // 画像リンクアドレスが相対アドレスの場合は再構築
  73. $domain_url = substr( $site_url, 0, strpos( $site_url, '/',8 ) + 1 ) ;
  74. $img_url = $domain_url.$img_url;
  75. }
  76. $pic_name =basename( $img_url ); //画像名を取得します
  77. if ( in_array( $img_url, self::$_img_url_old ) ) {
  78. echo $img_url 'この画像はキャプチャされました!
    ';
  79. return;
  80. }
  81. //画像コンテンツを取得して文字列に書き込みます
  82. $img_data = @file_get_contents( $img_url );
  83. if ( strlen($img_data) < $this->_limit_size ) { //画像サイズは制限
  84. $img_boo = @file_put_contents( $this->_save_path.md5(microtime()).$pic_name, $img_data );
  85. if ( $img_boo ) {
  86. echo $img_url .'画像は正常に保存されました。
    ';
  87. self::$_img_url_old[] = $img_url;
  88. } else {
  89. echo $img_url .'画像の保存に失敗しました!
    ';
  90. }
  91. } else {
  92. echo $img_url .'画像サイズは外では限界!
    ';
  93. }
  94. }
  95. }
  96. set_time_limit(0);
  97. $download_images = new download_image('surces_Img/',1024*1024*100);
  98. $download_images-> get_all_page_image('http://www.22mm.cc/');
  99. ?>
コードをコピー


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート