PHP Simple HTML DOM Parser を使って、スクレイピングをやってみようと
試行錯誤している最中なのですが、上手く出来なくて困っています。
具体的に分からないのは、以下の点です。
--------------------------------------------------------------------
$html = file_get_html('http://...');
foreach($html->find('ここの指定方法が分かりません') as $item);
echo $item->plaintext;
--------------------------------------------------------------------
こういった場合の文字列の指定方法は、
何をどう勉強すれば理解出来るようになるのでしょうか。
具体的に教えて頂けると助かります。
また、http://www.iimy.co.jp/item/p-33969.htmlに記載されている、
「1口以上の価格」の数値をこの方法で表示させたい場合(単位の"円"を除く)、
どのような指定方法になりますか?
「class="infoBoxContents"」を含めれば指定しやすそうだと考えて、
foreach($html->find('.infoBoxContents') as $item);
echo $item->plaintext;
と記述して、ひとまずこのclassを全て表示させようとしたのですが、
表示されたのは「ポイント 0 ポイント」だけでした。
参考にしたのは以下サイトです。
[PHP Simple HTML DOM Parserの使用方法]
http://www.crystal-creation.com/web-appli/techni …
No.3ベストアンサー
- 回答日時:
文字数固定の決め撃ちはやめたほうがいいですね。
下記は とりあえず、今回のケースでのみ動くという程度のもの。
正直、俺は正規表現を良く知らないので、もっといいやり方があると思う。
foreach($html->find('table.infoBox') as $item);
$str = $item->plaintext;
$DimData = explode(" " , trim($str));
foreach($DimData as $i => $dat) {
list($num , $price) = mb_split("個" , $dat);
$price = preg_replace("/[^0-9]/" , "" , $price);
print "$num 個 $price 円<br>\n";
}
ご回答ありがとうございます。
まだ何故これでスクレイピングされるのか理解出来ていませんが、
おかげさまで方向性が見えましたので、早速勉強開始しました。
こちらをベストアンサーとさせて頂きます。
回答して頂いた皆さん、ありがとうございました。
No.2
- 回答日時:
一応確認。
teraのRMTのページですよね?
んで、価格のところ(1個以上~10個以上)を取得したいんですよね?
一応、↓で結構絞り込めます。
foreach($html->find('table.infoBox') as $item) {
echo $item->plaintext . " <br>\n";
}
後は、自分で加工して、切り出すとかしたほうが楽かもしれません。
ご回答ありがとうございます。
>後は、自分で加工して、切り出すとかしたほうが楽かもしれません。
試してみました。↓
foreach($html->find('table.infoBox') as $item);
$str1 = $item->plaintext;
$substr1 = substr($str1,37,3);
echo $substr1;
このようにすれば目的の数値だけを取り出せるのですが、
こうすると価格の桁数の変動などに非常に弱くなってしまいます…。
うまい加工方法などありましたら教えて下さると助かります。
No.1
- 回答日時:
> foreach($html->find('ここの指定方法が分かりません') as $item);
んー。。。正直、そちらが参考にしたサイトに書いてあるとおりです。
$item->plaintext だと「ここの指定方法が分かりません」の部分に、取り出したいHTMLタグを指定すれば、そのタグで囲まれた部分のテキストが取れてきます。
以下は俺が試してみたもの。
○ hoge.php
------------------
<?php
include_once('../simple_html_dom.php');
$html = file_get_html('./hk.htm');
foreach($html->find('div[id]') as $item) {
echo $item->plaintext . "<br>\n";
}
?>
------------------
○ hk.htm
------------------
<html>
<body>
<div id=hk>残念。</div>
<div>それは私の</div>
<div id=oi>おいなりさんだ</div>
</body>
</html>
------------------
俺が試してみたものは、「DIV で ID のあるもの」という条件でスクレイピングしているから、元々のHTMLとPHPでスクレイピングしたものでは、表示が変わる。
HTMLのほうの「それは私の」の部分は IDを指定していないから、スクレイピングのほうではスルーされる。
↓これを
foreach($html->find('div[id]') as $item) {
↓こう変更すると、
foreach($html->find('div[id=oi]') as $item) {
「おいなりさんだ」しか表示しなくなります。
> 何をどう勉強すれば理解出来るようになるのでしょうか。
俺の場合は、概ね「トライアル&エラー」
日本語で言ったほうが短くて済む「試行錯誤」
幸い この PHP Simple HTML DOM Parser には、丁寧に example がついてた。
確実に動くサンプルがあるんだから、それを自分でいじってみて、何がどう変わるか見て、それで覚える感じですかね。
> また、http://www.iimy.co.jp/item/p-33969.htmlに記載されている~
うん。ごめん。面倒くさくなったから他の人に任せます。
回答、ありがとうございます。
>俺の場合は、概ね「トライアル&エラー」
挙げてくださった例だと非常にシンプルで分かりやすいのですが、
実際にリンク先サイトのソースを見てトライしてみると
まったく思い通りに抽出してくれなくて戸惑っています。
スクレイピングしたいサイトが30サイト以上あるので、
行き当たりばったりではなく、テンプレートな指定方法以外の
テクニックみたいなものが欲しかったというのもあるかもしれません。
exampleは普通に見逃していました…。
さっそく弄っています。ありがとうございます。
引き続きご回答お待ちしています。
リンク先サイトを例にした場合、文字列の指定方法はどのようなものが
最適かを教えてもらえると、参考になりとても助かります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数にHTMLを代入する場合
-
正規表現でタグの置換をしたい...
-
「ブログのコメント欄にリンク...
-
VBAのコマンドボタンの文字列の...
-
文字の入力で横バー上段、中断...
-
ファイルから読み取った改行文...
-
文字列中の両丸括弧を取り除くV...
-
エクセルでの漢字、カタカナ、...
-
エスケープ文字の復帰(¥r)と...
-
改行コードが半角スペースにな...
-
jsp 改行コードで改行させて表...
-
エクセルVBA 文字列領域が不足...
-
VBAを使ってHTMLソースから特定...
-
COBOLの改行
-
C# DataGridViewのセルを改行禁...
-
VBA ASC関数で変換できない文...
-
文字列の括弧について(初心者)
-
○分から○時間○分に変換
-
メッセージボックスで1025文字...
-
ソースコードの1行が長いとき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Nvuで作成したhtmlをコピペして...
-
変数にHTMLを代入する場合
-
タグにはさまれている文字以外...
-
phpの正規表現でstyle="●●"を削...
-
htmlのソースからテーブルの値...
-
[php][正規表現]タグ以外を削除...
-
正規表現でタグの置換をしたい...
-
URLの連続アクセス
-
csobjというタグについて
-
reuterの記事をbeautiful.soup....
-
JSFタグのfタグとは
-
PHPの正規表現でHTMLタグの内容...
-
htmlspecialchars関数を使いな...
-
Aタグってなんですか?
-
PHPスクレイピングが上手くいき...
-
preg_replaceでの正規表現によ...
-
Strutsでリンクを動的に生成したい
-
URLの結合
-
タグをとるのに、SAX
-
アフィリエイトタグについて質...
おすすめ情報