使用 PHP Goutte 进行网页抓取

Web Scraping with PHP Goutte

我想从这个website

中获取所有商品名称和价格

例如我想搜索"apple" 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";
});

但是当我 运行 代码时,它什么都不打印。如何从列表中获取所有商品的名称和价格?

redmart.com 网站正在使用 react js 生成内容。您不能使用像 Goutte 这样的网站抓取工具。相反,请尝试在 Firefox 或 Google Chrome 中使用开发人员控制台,看看发生了什么。

在这种情况下,请求 url(通过 ajax)returns JSON format and is rendered by react: https://api.redmart.com/v1.6.0/catalog/search?q=apple&pageSize=18&sort=1024&variation=BETA

使用 PHP,您只需在响应中使用 json_decode,即可获得所需的一切。

不需要废弃网页,您可以在网站 rest API 上请求并使用 poutput JSON,例如这是 API 苹果列表:

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