2017-01-26 23 views
0

目前,我通過Review Link獲取亞馬遜顧客評論的方式是使用通過鏈接獲取亞馬遜客戶評論內容。怎麼樣?

PHP Simple HTML DOM Parser

通過提供審查的鏈接,我可以取出來的評論內容類似 題目,評分評論,描述,圖片,視頻,作者等

這是所有可能的,如果我知道css selector每個內容。

要告訴你一個示例中,我如何做到這一點:

$url = 'REVIEW_URL_HERE'; 
$html = file_get_html($url,false); //see PHP Simple HTML DOM Parser 
$testSelector='#SAMPLE-SELECTOR'; 
$content = $html->find($testSelector, 0)->plaintext; 
//echo $content; //error-> seems selector is not present. 
echo $html; // i expect the review link page will be loaded. but the loaded page is different 

輸出是出乎意料的。自從我echo $html,我期待審查頁。但不同的頁面結果表明:

Screen Snippet

看來我使用來獲取審查內容的方法是不可能的了。任何想法的新方法? 我發現AWS提取評論...但AFAIK它不會返回審查內容..它只返回審查鏈接..

回答

0

當然是,但你必須是亞馬遜開發人員,並使用他們的API。查看文檔here

+0

感謝您的答覆埃裏克,正如我剛纔所說,它只會返回IFRAME SRC鏈接。並由於跨域問題..我無法獲取iframe中的內容......除非你知道如何? –

+0

您可以使用file_get_contents讀取PHP中iframe的內容,或者甚至可以用CURL讀取它。 – Eric

+0

嗯,好吧..生病檢查一下,一旦得到結果就回到你身邊。 :) 謝謝 –

0

您正在看到此消息,因爲您可能一再呼叫亞馬遜apis。亞馬遜在這種情況下阻止了IP地址。改變你的互聯網提供商,它應該開始工作。

0

也許你需要使用PHP和PhantomJs加上簡單的Javascript。 不要忘記:使用代理

一些這樣的:

<?php 
$html = exec("phantomjs --proxy=127.0.0.1:80 --proxy-auth=root:master 
    test.js http://httpbin.org/ip"); 
?> 

test.js

var args = require('system').args; 
var webPage = require('webpage'); 
var address = args[1]; 
var page = webPage.create(); 
var fs = require('fs'); 
var pageResponses = {}; 

page.settings.userAgent = 'Mozilla/5.0 (Windows NT 10.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'; 
page.settings.javascriptEnabled = true; 
page.settings.loadImages = false; 
phantom.cookiesEnabled = false; 
phantom.javascriptEnabled = true; 
page.settings.resourceTimeout = 20000; 
page.customHeaders = { // use correct header 
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 
    "Accept-Language": "en-US,en;q=0.5", 
    "Connection": "keep-alive", 
}; 
page.viewportSize = { width: 1024, height: 768 }; 

try { 
    page.open(address, function (status) { 
     console.log(page.content); 
     window.setTimeout(function() { 
      phantom.exit(); 
     }, Math.random()*500 + 1500); 
    }); 
} catch(e) { 
    phantom.exit(1); 
}