веб-соскоб не работает только на этом сайте - PullRequest
0 голосов
/ 07 апреля 2019

Я использую один и тот же код для получения цены на разные веб-страницы (в частности, 7), все работают отлично, но в 1 я не могу получить никаких данных, подскажите, если это невозможно, если страница есть защита? Заранее спасибо.

$source = file_get_contents("https://www.cyberpuerta.mx/Computo-Hardware/Discos-Duros-SSD-NAS/Discos-Duros-Internos-para-PC/Disco-Duro-Interno-Western-Digital-Caviar-Blue-3-5-1TB-SATA-III-6-Gbit-s-7200RPM-64MB-Cache.html");

preg_match("'<span class=\"priceText\">(.*?)</span>'", $source, $price);

echo $price[1];

Я надеюсь, что этот результат: $ 869,00

Этот код плохо работает только на веб-сайте, указанном в коде.

1 Ответ

1 голос
/ 07 апреля 2019

Используйте curl с набором агентов, это обычно обманывает защиту сайта, чтобы он считал, что это настоящий пользователь.

$URL = "https://www.cyberpuerta.mx/Computo-Hardware/Discos-Duros-SSD-NAS/Discos-Duros-Internos-para-PC/Disco-Duro-Interno-Western-Digital-Caviar-Blue-3-5-1TB-SATA-III-6-Gbit-s-7200RPM-64MB-Cache.html";

$agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)'; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_VERBOSE, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
curl_setopt($ch, CURLOPT_URL, $URL); 
$result =curl_exec($ch);
preg_match("'<span class=\"priceText\">(.*?)</span>'", $result, $price);

echo $price[1];
...