まず、私は店舗からこのデータを取得する許可を得ているので、合法性はここでは問題になりません。
さまざまなオンラインストアから情報を取得し、1時間に1回データベースに保存しようとしています。
サンプルサイト:http ://www.uptherestore.com/department/accessories
私はこのようなPHPスクレイプを試しました:
<?php
$file_string = file_get_contents('http://www.uptherestore.com/department/accessories');
preg_match('/<div class="view view-uc-products view-id-uc_products view-display-id-page_3 storeview view-dom-id-1">
(.*)<\/div>/i', $file_string, $title);
$title_out = $title[1];?>
<p><strong>Accessories:</strong> <?php echo $title_out; ?></p>
しかし、それは私に同類のエラーを与えています:
[14-Feb-2013 07:39:49 UTC] PHP Warning: DOMDocument::loadHTML() [<a href='domdocument.loadhtml'>domdocument.loadhtml</a>]: htmlCheckEncoding: encoder error in Entity, line: 7 in scraping.php on line 5
ログファイルからの完全なエラーはここにあります:http://pastebin.com/W2Bhkc0s
そのサイトから何とかこすり取ったとしても、結果の最初のページのみが返されます(すべてのページが必要な場合)。これに対する私の現在の解決策は次のとおりです。
- jQueryを使用して、ページ下部のページャーに含まれる要素の数を確認します
- これらの各ページをスクレイプするループを実行します
しかし、これは理想的ではありません。ご覧のとおり、ページの下部に1〜9ページがありますが、「最後」をクリックすると、実際には11ページのコンテンツがあります。要するに、このようなサイトからデータをスクレイピングするための最良の方法は何ですか?前述のように、ストアの所有者はすべて私にコンテンツの使用を許可してくれましたが、特に技術的なことは気にせず、サーバーへのアクセスを許可したり、サーバーの.htaccessにコードを入れて私のWebサイトからのリクエストを許可したりすることはできません。