парсер с сайта www.kinopoisk.ru

Статус
В этой теме нельзя размещать новые ответы.

Joker84

Постоялец
Регистрация
8 Авг 2007
Сообщения
68
Реакции
2
Добый день я конечно не гуру в php и пишу всего лишь 3 парсер но наткнулся на такую проблему и прошу о помощи.

Код:
$source = file_get_contents('http://www.kinopoisk.ru/level/1/film/195524/');
if (!$source) die('Nothing found!');

И он постоянно выводит что нечиго с данного URL несграбленно.

как решить эту проблему??? с других сайтов все грабиться на ура
может быть есть другие ф-и подскажите
 
попробуйте сграбить страницу своего сайта, а потом глянуть какой там будет user-agent и IP.
скорее всего бан по UA/IP или все вместе.
сам таких "грабителей" постоянно баню на своих сайтах. :)
хотя от грамотного парсера защиты нет.
 
Joker88, советую воспользоваться Для просмотра ссылки Войди или Зарегистрируйся.
Часа 2 изучения сэкономят достаточно времени.
 
Joker88, советую воспользоваться Для просмотра ссылки Войди или Зарегистрируйся.
Часа 2 изучения сэкономят достаточно времени.

PHP:
<?php
$ch = curl_init("http://kinopoisk.ru/");
$fp = fopen("example_homepage.txt", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);
curl_close($ch);
fclose($fp);
?>


Сохраняет
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/0.5.24</center>
</body>
</html>
 
Возможно на кинопоиске идет проверка на USER_AGENT или какие-то другие данные которые помогают определить пользователя?
 
PHP:
<?php
$ch = curl_init("http://kinopoisk.ru/");
$fp = fopen("example_homepage.txt", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);
curl_close($ch);
fclose($fp);
?>


Сохраняет


Спасибо за советы попробовал реализовать
выдает ошибкку

Fatal error: Call to undefined function curl_init() in номер страки с $ch = curl_init("http://kinopoisk.ru/");


Может что у меня в php отключено стоит php 5.x
 
Вот если ты хочешь, чтоб работало, сядь и почитай.
Там написано, какие бибилиотеки и как включить.
loshik, если бы приведенный пример работал, то у автора вообще не было бы проблем.
в том-то и прикол, что USER AGENT'a можно поменять, да и вообще практически любой параметр можно поменять с помощью curl.
 
sw04, мне самому интересно парсить с кинопоиска.
Я выложил код, котрым сам пытаюсь это сделать. Но не получается. Просто я не написал в своём посте что не работает =(
Кто что предложит?

Добавлено через 45 минут
Путём недолгого курения манов было получено вот это

PHP:
<?php

$userAgent = "Opera/9.0 (Windows NT 5.1; U; en)";
$target_url = "http://kinopoisk.ru";

$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch, CURLOPT_URL,$target_url);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_TIMEOUT, 100);

$html = curl_exec($ch);
if (!$html) {
echo "<br />cURL error number:" .curl_errno($ch);
echo "<br />cURL error:" . curl_error($ch);
exit;
}
else {
	echo $html;
	}
?>

И ведь работает, скотина. Даже приятно =)
Правда не известно, как быстро твой ip попадёт в бан на этом ресурсе. Наверняка парсеров как то вычесляют и режут.
 
Собственно нашёл где зарыли собаку.

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

Как я понял, после проверки всех параметров при соединении к серверу кинопоиска нас перенаправляют по нужному адресу. Так вот эта строчка нам и нужна.

CURLOPT_FOLLOWLOCATION: При установке этого параметра в ненулевое значение, при получении HTTP заголовка "Location: " будет происходить перенаправление на указанный этим заголовком URL (это действие выполняется рекурсивно, для каждого полученного заголовка "Location:").
 
lolshik, ага спасибо большое действительно получилось. почитал про curl много давольно интересного для себя открыл. будутеперь резать html страницу и брать данные
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху