首先,應該提到,我有從商店的權限刮這些數據,所以合法性不是問題在這裏!從各家網上商店刮來的數據
我試圖從各種網上商店刮取信息,並將它們存儲在數據庫中,每小時一次。
範例網站:http://www.uptherestore.com/department/accessories
我已經嘗試了PHP scrape這樣的:
<?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中放置任何代碼以允許來自我的網站的請求。
那麼你需要在網絡客戶端或服務器上做到這一點? – 2013-02-21 01:03:51
JS/jQuery不會幫助你,除非A.你從一個不受[同源策略](http://en.wikipedia.org/wiki/Same_origin_policy)或B的擴展運行它。另一個網站啓用了CORS,允許您發送請求。你可能會在後端做這件事。 – 2013-02-21 01:04:21
你爲什麼使用ajax/javascript?這隻需要一個預定的工作(cron?)和一個php腳本。 – jeroen 2013-02-21 01:04:27