0

私は PHP を初めて使用し、Amazon の商品タイトルをスクレイピングするツールをコーディングしようとしています。現在、最初のページをスクレイピングできますが、ページがなくなるまで次のページに移動し、次のような同じタスクを実行するツールが必要です。スクレイピングしている1ページ目。コードは次のとおりです。

    <?php
$file_string = file_get_contents('http://www.amazon.com/s/ref=lp_3737671_pg_1?rh=n%3A1055398%2Cn%3A%211063498%2Cn%3A3206324011%2Cn%3A3737671&page=1&ie=UTF8&qid=1361609819');
preg_match_all('/<span class="lrg bold">(.*)<\/span>/i', $file_string, $links);
for($i = 0; $i < count($links[1]); $i++) {
echo $links[1][$i] . '<br>';
}

?>

どんな助けでも大歓迎です...

4

1 に答える 1

0

すべてのページの HTML を 1 つの変数として取得するには、これでうまくいきます

    <?php

    $html = '';

    $file_string = file_get_contents('http://www.amazon.com/s/ref=lp_3737671_pg_1?rh=n%3A1055398%2Cn%3A%211063498%2Cn%3A3206324011%2Cn%3A3737671&page=1&ie=UTF8&qid=1361609819');
    preg_match_all('/<span class="lrg bold">(.*)<\/span>/i', $file_string, $links);
    for($i = 0; $i < count($links[1]); $i++) {
        $html .= file_get_contents($links[1][$i]);
    }

    echo "all pages combined:\n".$html;

    ?>

ただし、サーバーがタイムアウトしたり、メモリが不足したり、他の問題が発生したりする可能性が高くなります。HTML コンテンツをスクレイピングするには、最初に URL リストを作成してから、一度に 1 つずつスクレイピングする方がよいでしょう。これは、AJAX 経由でスクレーパーを呼び出す HTML ページを介して行うことができます。

于 2013-02-27T06:24:03.187 に答える