2016-11-24 4 views
-1

AmazonでPHPを使用していますが、私は何が間違っているのか分かりません。問題は、私が掻き集めたすべてのデータにアクセスできないことです。ここに私のコードは次のとおりです。PHP Web ScrapingとJSONまたはArray出力

<?php 

    $url = 'https://www.amazon.com/s/ref=nb_sb_ss_c_1_9?url=search-alias%3Daps&field-keywords=most+sold+items+on+amazon&sprefix=most+sold%2Caps%2C435&crid=348CE8G406XVG&rh=i%3Aaps%2Ck%3Amost+sold+items+on+amazon'; 

    $html = file_get_html($url); 

    foreach ($html->find('h2[class=a-size-medium]') as $element) { 

    echo "<li>" .$element->plaintext."</li><br>";  

    } 
?> 

foreach文は、プレーンテキストを出力ループが、私は、変数や配列へのプレーンテキストを渡すことができるようにしたいです。問題は、私がそれを行い結果を出力すると、プレーンテキスト配列の最後の文字列しか取得できないということです。私は間違っていることを見つけるために多くの研究をしましたが、私はそれを見つけることができません。助けていただければ幸いです。ここで私が達成しようとしているもの:

<?php 
    $url = 'https://www.amazon.com/s/ref=nb_sb_ss_c_1_9?url=search-alias%3Daps&field-keywords=most+sold+items+on+amazon&sprefix=most+sold%2Caps%2C435&crid=348CE8G406XVG&rh=i%3Aaps%2Ck%3Amost+sold+items+on+amazon'; 
    $hold = array(); 
    $html = file_get_html($url); 

    foreach ($html->find('h2[class=a-size-medium]') as $element) { 

    $hold = $element->plaintext;   

    } 
    print_r($hold); 

?> 

第二のコードが出力され、プレーンテキストの最後の文字列:「ラバーメイドLunchBloxサイドコンテナキット、2パック、1806176」。私はプレーンテキストをエンコードしてデコードすることでこれを達成しようとしましたが、何も変わっていません私は間違って何をしていますか?

+0

私はPHPが... –

+0

@RoshanBhumbraでこれを行うための最良の言語ではないかもしれないと感じ。コメントしてくれてありがとう。なぜ説明できますか? – Kelly

+0

Phpはページを提供するのに適しています。また、拡張操作にはあまり適していないさまざまな癖があります。たとえば、実行期限があるため、他の多くの言語を使用しているようなページを継続的に削り取ることはできません。 –

答えて

1

代わりの文字列に配列ホールドを設定...配列に新しい要素を追加します。

$hold[] = $element->plaintext;   
+0

ご返信ありがとうございます。なぜあなたは質問をダウングレードしましたか?私はすでにそれを再フォーマットしました。私は裏技を使うのを忘れていた。とにかく、ありがとうございます。 – Kelly

+0

それは私の友人ではなかった – WEBjuju

+0

Ok。ありがとう。私は配列として$ holdを宣言していないことに気づいた。あなたの貢献が修正されました。もう一度ありがとう。 – Kelly