Парсинг Amazon Review средствами PHP или JavaScript

140
25 января 2018, 20:00

Пытаюсь сделать функциональность в WordPress которая бы парсила по URL определенное ревью с Amazon и потом добавляла его ко мне на сайт. Не могу спарсить. Обычно я делаю такие задачи с помощью Python, но тут WordPress, а значит у меня только PHP и JavaScript.

Для PHP я использую curl.

$url = "https://www.amazon.com/review/[coment-ID]";
$curl = curl_init($url);
$headers = [
'X-Apple-Tz: 0',
'X-Apple-Store-Front: 143444,12',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Encoding: gzip, deflate',
'Accept-Language: en-US,en;q=0.5',
'Cache-Control: no-cache',
'Content-Type: application/x-www-form-urlencoded; charset=utf-8',
'Host: https://www.amazon.com/review/[comment-ID]',
'Referer: [my-webpage]',
'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:28.0) Gecko/20100101     Firefox/28.0',
'X-MicrosoftAjax: Delta=true'
];
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$output = curl_exec($curl);
curl_close($curl);

но когда я пытаюсь распарсить ответ, я вижу что в ответе:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"         "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>ERROR: The request could not be satisfied</TITLE>
</HEAD><BODY>
<H1>ERROR</H1>
<H2>The request could not be satisfied.</H2>
<HR noshade size="1px">
Bad request.
<BR clear="all">
<HR noshade size="1px">
<PRE>
Generated by cloudfront (CloudFront)
Request ID: eqzLZQaioGyAW31EYWTmHA9vG_OES6xJ6GDJanQnBkhaby98C_vebQ==
</PRE>
<ADDRESS>
</ADDRESS>
</BODY></HTML>

Без заголовков к запросу Amazon сразу видит во мне бота и ничего не отдает. Не получается в общем.

Чтобы пытаться парсить на JS я использую ygrab. Тут так же не выходит.

var data = {
    url: 'https://www.amazon.com/gp/customer-reviews/R3TGVQRYYN46TR/',
    selector: 'div.a-fixed-right-grid-inner',
    loop: true,
    result: {
      customer_name: {
        find: 'a.author"',
        grab: {
          name: 'text',
          value: ''
        },
      }
    }
}
var result = ygrab(data);

У Amazon конечно есть API, но по заявлениям на SO, он возвращает вообще не то.

Как посоветуете стягивать Review?

READ ALSO
Нужен прогрес бар PHP

Нужен прогрес бар PHP

Делаю рассылку из базы, получаю 50 000 id и через

214
Как программировать QT C++ на Visual Studio?

Как программировать QT C++ на Visual Studio?

Что Вы используете для программирования QT c++? Используете вместо QT Creator Visual Studio? И если да-то как всё настроить- дополнение и что там ещё надо...

260
Читать строки из файла, пока они есть

Читать строки из файла, пока они есть

Нужно в цикле читать слово из файлаЦикл должен работать до тех пор, пока в файле есть строки

236
Использование библиотеки boost

Использование библиотеки boost

Ребят, пытаюсь разобраться с библиотекой boostНужны большие числа

256