めろ

とりあえずやってみる

PHPのスクレイピングがうまくいかないぞ

はじめまして

どうせつくるならブログもやってみようと思いはてブロはじめてみました。

 

んで、今回趣味もかねて画像などのスクレイピングを組みたいなあと思い

やってみることに。ちなみにPHP

 

 

まず、サーバー

とりあえず、さくらサーバーでいいか無難に。

 

んで、スクレイピングについてぐぐる

んー参考になりそうなサイトをピックアップ

 

使うライブラリはSimple HTML DOM Parserが定番?なのかな

重いという意見も見かけたけどまあやってみる

 

下記のコードはすごいシンプルでわかりやすいんじゃないかな?

 

PHPで画像まとめサイトをスクレイピング #01 - KYOHON

<?php
require_once('./simple_html_dom.php');

$html = file_get_html('ここにURLを入れる');

foreach ($html->find('a') as $link_path) {
	$img_path = $link_path->getAttribute('href');
	if (preg_match('/\.jpg$|\.png$|\.jpeg$/', $img_path)) {
		GetNijigen($img_path);
	}
}

function GetNijigen($img_path){
	$img_info = getimagesize($img_path);
	if ($img_info[0] >= 400 && $img_info[1] >= 400) {
		$extension = explode('.', $img_path);
		$img_ext = end($extension);
		$upload_name = sha1(date('Y-m-d H:i:s').$img_path).'.'.$img_ext;
		$img_data = file_get_contents($img_path);
		file_put_contents('./'.$upload_name,$img_data);
	}
}

 

ふむふむなんとなくわかった気がする。

 

じっさいテストしてみると、指定したURLの画像がサーバーに入ってる!すごい

 

問題はこの画像をDBにいれること

mysqlでinsertするだけなら簡単じゃん?とか思ってやってみると

できない。

 

mysqli_query( 'INSERT INTO test (test) VALUES ( "'.$hensu.'" )');

だめ

いろいろためし最終的にこれでも

mysql_query('INSERT INTO test SET test="test"');

 

Warning: mysql_query(): No such file or directory in /

Warning: mysql_query(): A link to the server could not be established in /

 

たくさんエラーでました

 

はあinsertもできない自分がいやになる。

 

ちょっと調べて

$PDOと$stmtでエラーは出なくなったけどうまくDBにとばせない

おそらく変数とかのもんだいかな

うーむ

 

とまあこんなかんじでまだできていません。

 

次回はできたら書くかな