Парсинг не работает только на этом сайте

Я использую один и тот же код для получения цены разных веб-страниц (в частности, 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

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

на некоторых веб-сайтах есть функция защиты от очистки, например Amazon, которая не позволяет очищать данные.

Payam Khaninejad 07.04.2019 06:50

@PayamKhaninejad На самом деле этот код (изменение классов), если он позволяет мне получать данные с Amazon.

David Noriega 07.04.2019 06:52

Вам нужно включить error_reporting и обратить внимание на предупреждающие сообщения, которые очень интересны; см. 3v4l.org/LM1il. Проблема, по-видимому, действительно связана с конкретным веб-сайтом и средствами защиты, которые у них есть.

slevy1 07.04.2019 07:07

@ slevy1 Эти предупреждения - просто ограничение используемой вами песочницы.

KIKO Software 07.04.2019 07:10

Я не думаю, что 3v4l позволяет использовать file_get_contents. Но OP попробуйте вместо этого использовать завиток, который обычно работает, когда страница имеет такую ​​​​защиту.

Andreas 07.04.2019 07:10

@DavidNoriega см. здесь: stackoverflow.com/questions/34288640/…

Andreas 07.04.2019 07:14

@andreas hase Я запускаю код, и появляется страница Google (честно говоря, я никогда не пытался), но как я могу реализовать это в своем коде? Я думаю, что мы на правильном пути, что-то мне это подсказывает.

David Noriega 07.04.2019 07:18

Использование регулярного выражения для анализа html делает это неправильно.

Lawrence Cherone 07.04.2019 07:26
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
8
66
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте 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];

Вы просто помогли не тому человеку. Прочтите: seo-theory.com/… Вы можете с этим не согласиться, но это правильное мнение. Подумайте о своей морали, пожалуйста.

KIKO Software 07.04.2019 07:28

@Software KIKO Это личный проект, который никогда не будет в сети, я буду использовать его для своего бизнеса локально, когда я цитирую кусок, который меня спрашивает клиент, мне нужно открыть 8 страниц, чтобы сравнить цены, таким образом я буду сэкономить много времени. Я понимаю озабоченность, но это в личных (некоммерческих) целях.

David Noriega 07.04.2019 07:31

@DavidNoriega Вы не единственный читатель этого ответа. Впрочем, это принцип, а не про вас.

KIKO Software 07.04.2019 07:32

@KIKOSoftware не читал всего этого, но я видел, что ты паразит и веришь, что имеешь право на чужие данные и так далее... Это то, о чем ты споришь? С чего ты взял, что так всегда? У меня самого есть сканер, и у меня есть письменные соглашения со всеми страницами, которые я сканирую.

Andreas 07.04.2019 07:33

Дело в том, что вы помогаете роботам-краулерам лгать о своей личности. Это плохо для веб-сайта во всех смыслах. Не ленитесь, читайте статью и учитесь. @DavidNoriega В конечном итоге да, хотя ошибка была не твоей.

KIKO Software 07.04.2019 07:38

@KIKOSoftware Я прочитал это сейчас, и совершенно очевидно, что это написал сварливый человек. Нигде он не упоминает никаких исключений, таких как соглашения или веб-сайты, которые позволяют, даже если они имеют эти функции безопасности, или что вы можете связаться с владельцем. Если вы хотите, чтобы статья вызывала доверие, по крайней мере покажите обе стороны медали и скажите, что могут быть исключения из правил.

Andreas 07.04.2019 07:42

Ха-ха, да, очень сварливый. Идея обратиться к вебмастеру она есть, хотя и не явная. Все равно разрешения никто не спрашивает. Наверное, это и сделало его злым. Дело, конечно, в том, что сеть наводнена поисковыми роботами, которые лгут о своей личности, и это портит работу веб-сайтов. Это бесплатно для всех, кроме владельца сайта.

KIKO Software 07.04.2019 07:47

Я также только что закончил читать статью, и я не согласен на 100%, это просто: Заставляет ваших пользователей входить в систему и, если необходимо, платить за чтение того ценного контента, который вы не хотите, чтобы кто-либо видел (или еще лучше . .. не публиковать его в Интернете), в моем случае я приношу своим поставщикам тысячи прибыли за продажу их продуктов, я не думаю, что они злятся на то, что я сокращаю свое рабочее время и покупаю больше.

David Noriega 07.04.2019 07:51

@DavidNoriega Тогда почему ты должен лгать о личности своего сканера? Другими словами; Даже массовый убийца может найти оправдание поступку, что не делает его правильным. (Кстати, я не хочу сравнивать вас с массовым убийцей, я просто хочу подчеркнуть, что хорошее оправдание не оправдывает плохое поведение).

KIKO Software 07.04.2019 07:54

@KIKOSoftware, а еще есть старая поговорка. Не размещайте в Интернете то, что вы не хотите, чтобы люди украли.

Andreas 07.04.2019 07:58

Скажи это европейцам! (см.: bbc.com/news/technology-47239600). Но я согласен с этим, вы не можете защитить веб-контент от копирования. Любая попытка этого обречена. Но вы явно все еще неправильно понимаете, я говорю не о контенте, я говорю о трафике.

KIKO Software 07.04.2019 08:01

хахаха уже хорошо, мы останавливаем это, им нужно проголосовать, чтобы стереть или нет это преступление: 1 или 0?

David Noriega 07.04.2019 08:05

@DavidNoriega Для меня достаточно обсудить это, вам не нужно удалять преступление. (Могу ли я передумать?)

KIKO Software 07.04.2019 08:06

@Andreas Не мог бы ты мне еще раз помочь stackoverflow.com/questions/55718569/…

David Noriega 17.04.2019 03:36

Другие вопросы по теме