Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Добрый день.
Пытаюсь написать парсер, который берет данные со стороннего сайта.
Вот мой код:
public function index()
{
$context = stream_context_create(
array(
"http" => array(
"max_redirects" => 101,
"header" => "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"
)
)
);
$link = '[url]https://url.com[/url]';
// Get html remote text.
$html = file_get_contents($link, false, $context);
dd($html);
}
Код рабочий. Но на одном из сайтов постоянно выдаёт ошибку (в примере, в целях безопасности, указан не реальный url):
ErrorException (E_WARNING)
file_get_contents(https://url.com): failed to open stream: Redirection limit reached, aborting
Также пробовал вариант с follow_location
public function index()
{
$context = stream_context_create(
array(
"http" => array(
"max_redirects" => 101,
"header" => "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36",
'follow_location' => false
)
)
);
$link = '[url]https://url.com[/url]';
// Get html remote text.
$html = file_get_contents($link, false, $context);
dd($html);
}
Выдаёт следующее сообщение:
"""
<HTML><HEAD><TITLE>Loading</TITLE></HEAD><BODY bgcolor="#ffffff"><H3 style="color: #ffffff">Loading</H3></BODY></HTML>
"""
Через браузер страница открывается. Пробовал запускать как локально, так и с сервера. Результат один и тот же.
Подозреваю, что стоит какая-то защита на сайте, т.к. другие сайты парсятся нормально.
Вся надежда на вас, подскажите как решить данную проблему. Заранее спасибо.
Изменено Vladimir_user (23.07.2021 07:39:51)
Не в сети
Без адреса сайта тут сказать ничего нельзя. Могу посоветовать скачать curl (если на Windows) и запросить страницу через него. Если страница будет нормальной, значит проблема у вас, если через curl страницы тоже нет, тогда дело в сайте.
Не в сети
Страницы 1