Web Scraping с PHP Goutte - PullRequest
       48

Web Scraping с PHP Goutte

0 голосов
/ 07 мая 2018

Я хочу получить все наименование и цену товара с этого сайта

Например, я хочу найти "яблоко" https://redmart.com/search/apple

Я использую Goutte для очистки сайта. Это код, чтобы получить имя всего элемента в списке:

$client = new Client();

$crawler = $client->request('GET', 'https://redmart.com/search/apple');

$crawler->filter('h4 > a')->each(function ($node) {
    print $node->text()."\n";
});

но когда я запускаю код, он ничего не печатает. Как получить из списка название и цену товара?

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Не нужно извлекать из Интернета, вы можете просто запросить API покоя сайта и использовать poutput JSON, например, это API для листинга яблока:

https://api.redmart.com/v1.6.0/catalog/search?q=apple&pageSize=18&sort=1024&page=1&variation=BETA

0 голосов
/ 07 мая 2018

Сайт redmart.com использует реагирует js для создания контента.Вы не можете использовать веб-скребок, как Goutte.Вместо этого попробуйте использовать консоль разработчика в Firefox или Google Chrome и посмотрите, что происходит.

В этом случае запрашивается URL (через ajax), который возвращает формат JSON и отображаетсяреагирует: https://api.redmart.com/v1.6.0/catalog/search?q=apple&pageSize=18&sort=1024&variation=BETA

В PHP вы просто используете json_decode в ответе, и у вас есть все, что вам нужно.

...