Я пытаюсь создать скребок со страницы списка поиска товаров Amazon.
метод:
function getHTMLcode($url) {
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 10.10; labnol;) ctrlq.org");
curl_setopt($curl, CURLOPT_ENCODING, 'identity');
curl_setopt($curl, CURLOPT_FAILONERROR, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($curl);
curl_close($curl);
return $html;
}
вызов метода:
$url="http://www.amazon.com/s/?url=search-alias%3Daps&field-keywords=iphone";
$html= getHTMLcode($url);
$image = '/src="(?P<img>[^"]*)"/';
preg_match_all($image,$html,$data);
var_dump($data);
Проблема: этавозвращает все теги src, существующие на странице.Мне нужны только продукты с class = "s-image"
, но не возвращает h2 (название продукта) и ценники.
Вопрос: как получить только те изображения, заголовки и ценники с определенным именем класса от amazonсписок поиска товаров.Amazon возвращает
<img src="https://m.media-amazon.com/images/I/61QSgY4zXNL._AC_UL436_.jpg" class="s-image" alt="Apple iPhone Xs Max with FaceTime - 256GB, 4G LTE, Space Gray" srcset="https://m.media-amazon.com/images/I/61QSgY4zXNL._AC_UL436_.jpg 1x, https://m.media-amazon.com/images/I/61QSgY4zXNL._AC_UL654_FMwebp_QL65_.jpg 1.5x, https://m.media-amazon.com/images/I/61QSgY4zXNL._AC_UL872_FMwebp_QL65_.jpg 2x, https://m.media-amazon.com/images/I/61QSgY4zXNL._AC_UL1090_FMwebp_QL65_.jpg 2.5x, https://m.media-amazon.com/images/I/61QSgY4zXNL._AC_UL1308_FMwebp_QL65_.jpg 3x" data-image-index="0" data-image-load="" data-image-latency="s-product-image" data-image-source-density="1">
Аналогично;чтобы получить название и цену продукта, который я пытаюсь
$title = '/<h2 class="a-size-mini a-spacing-none a-color-base s-line-clamp-2">(?P<val>[^>]*)<\/h2>/';
preg_match_all($title,$html,$value);
var_dump($value);
$price ='/<span class="a-price-whole><span class="a-price-symbol"> <\/span>(?P<price>[^>]*)<\/span>/';
preg_match_all($price,$html,$cost);
var_dump($value);