※ ChatGPTを利用し、要約された質問です(原文:PHPによるスクレイピングについて。)
PHPによるスクレイピングについて
このQ&Aのポイント
APIを使わずにAmazonの情報をスクレイピングする方法は?
PHPでAmazonのURLからソースを取得し、正規表現で特定の部分を抽出したい。
スクレイピング実行時に「Array ( [0] => Array ( ) [1] => Array ( ) )」と表示されてしまう。原因は?
amazonでapiを使わず、スクレイピングをしたいと考えています。ソースを取得後、取得ソース中の下記部分を正規表現で抽出したいと考えていますが、実行すると、「Array ( [0] => Array ( ) [1] => Array ( ) )」
と表示されてしまいます。どこに問題がありますでしょうか?
<a href="http://www.amazon.co.jp/gp/offer-listing/B000JJRWIU/ref=sr_1_olp_9/377-5056805-4862865?ie=UTF8&s=dvd&qid=1330077227&sr=1-9">9 点の全新品/中古品を見る</a>
<span class="otherprice">¥ 1,197</span>より</span></td></tr><tr><td class="pointsEarnable"></td></tr><tr><td class="fastTrackList">通常5~7日以内に発送</td></tr>
<tr><td class="srListSSS"><span class="srEmphSSS">通常配送無料</span></td></tr>
<?php
include( "scrape_func2.php" );
$_rawData = getURL( "http://www.amazon.co.jp/%E6%81%8B
%E6%84%9B-%E5%A4%96%E5%9B%BD%E6%98%A0%E7%94%BB-
DVD/b/ref=bw_ab_562016_5?
ie=UTF8&node=589344&pf_rd_p=106708969&pf_rd_s=left-
1&pf_rd_t=101&pf_rd_i=562016&pf_rd_m=AN1VRQENFRJN5&pf_rd_r=1G
XM2TY1R5SDE3MA35XJ" );
$_rawData = mb_convert_encoding($_rawData, "SJIS",
"ASCII,JIS,UTF-8,EUC-JP,SJIS");
/*<a href="http://www.amazon.co.jp/gp/offer-listingで始まり、</span></td></tr>で終わる部分を抽出*/
preg_match_all("/(<a href=\"http:\/\/www.amazon.co.jp\/gp\/offer-listing <\/span><\/td><\/tr>)/", $_rawData, $match);
print_r($match);
?>
scrape_func2.php
<?php
function getURL( $pURL ) {
$_data = null;
if( $_http = fopen( $pURL, "r" ) ) {
while( !feof( $_http ) ) {
$_data .= fgets( $_http,1024 );
}
fclose( $_http );
}
return( $_data );
}
?>
お礼
無事解決致しました。ありがとうございました。
補足
ご回答ありがとうございます。 正規表現について半日ほど調べてみたのですが、詰まってしまいまして。 正規表現の記述の仕方が違うと思いますが、どのようにしたら良いでしょうか?