使用 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
我想从这个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