読者です 読者をやめる 読者になる 読者になる

halka-tech

技術的なことを書きます

twitpicの画像をほぼダウンロードするスクリプト

PHP Simple HTML DOM Parser
http://simplehtmldom.sourceforge.net/
を使いました.
よくわかりませんが,ダウンロードしないものがあります.
どこが悪いのかだいたい分かりましたのでそのうち直します.
ということで,だいたいダウンロードできます.

画像は自分で選別してくださいね!

<?php
	//すごく時間がかかります.
	include 'simple_html_dom.php';
	$count=0;

	$username='';	//取得したいユーザ名を入れてね!
	$allpics=;	//そのユーザの全画像数を入れてね!

	$page=(int)ceil($allpics/20);	//ページ数を計算
	echo "pictures : $allpics\n";
	echo "all pages : $page\n";
	echo "Now parsing page...\n";

	//ページを解析して画像の詳細ページのアドレスを調べるよ!
	for($i=1;$i<=$page;$i++)
	{
		$html = file_get_html("http://twitpic.com/photos/$username?page=$i");
		$divimage=$html->find('div.profile-photo-img');	//jQueryっぽい感じでDOMツリーを見てます
		foreach($divimage as $div)
		{
			foreach($div->find('a') as $element)
			{
				$list[$count]=$element->href;
				$count++;
			}
		}
	}
	echo "Parse finished\n";

	echo "Starting to download\n";
	$files=0;
	//調べたアドレスからフルサイズの画像をダウンロードするよ!
	foreach($list as $entry)
	{
		$count=0;
		$imagepage=file_get_html("http://twitpic.com$entry/full");
		foreach($imagepage->find('img') as $element)
		{
			$image=$element->src;
			if($count==1)
			{
			file_put_contents('img2/'.str_replace("/","",$entry).".jpg",file_get_contents($element->src));
			$files++;
			}
			$count++;
		}
	}
	echo "downloaded files : $files\n";
	echo "Finished! enjoy!! it's join!\n";
?>

回線にもよりますが,500枚分のパースとダウンロードで30分くらいかかりました.
スレッドとかでパラレルに処理できると速くなりそうですね.
楽しいインターネットライフです