Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Парсинг
Новая тема
Ответить
цитата
23/03/13 в 11:37
Lexikon
Текст этого сообщения доступен только зарегистрированным пользователям.
цитата
23/03/13 в 16:29
Sterx
попробуй завтра воспроизвести файл с сегодняшней ссылкой
будешь удивлен
цитата
23/03/13 в 17:10
Lexikon
Sterx писал:
попробуй завтра воспроизвести файл с сегодняшней ссылкой
будешь удивлен
завтра уже будет не работать я так понимаю?
как и что тогда парсят?
цитата
23/03/13 в 17:49
Дартаньян
Lexikon:
два варианта, раздебажат плеер выкуривают криптографию к прямому урлу, делают у себя так. Есть еще способ с скрытой вставкой.
цитата
23/03/13 в 21:02
Lexikon
т.е. то что я спарсю ссылку которая в самом начале показал это все до жопы. Нужно копать по другому и средствами ПХП этого не достичь.
Касаемо скрытой вставки это как понять?
Кстати на тьюбе на каждой странице дают еще код ембеда, этот код работает и как я понял он остается постоянный. Получается можно дергать его и при кастомной генерации галь вставлять на страницу. Но в данном случае реклама и т.п. будет все что передает тот тьюб.
Касаемо моего вопроса в предыдущем посте
Парсят тьюбы путем получения доступа к прямому юрл файла?
цитата
23/03/13 в 21:42
Sterx
варианта два
1 юзать ембеды
2 качать ролики к себе на хост со всеми вытекающими.
выбирай
цитата
23/03/13 в 21:48
Diablo
3. парсить актуальную ссылку реалтайм на каждый запрос мувика серфером
цитата
23/03/13 в 23:08
Дартаньян
Lexikon:
ссылка через js.
цитата
24/03/13 в 09:00
Lexikon
Diablo II писал:
3. парсить актуальную ссылку реалтайм на каждый запрос мувика серфером
О таком извращении мысль тоже была
, но это не серьезно
цитата
24/03/13 в 17:36
Дартаньян
Lexikon:
тут или там и тогда твой бедвичь сгорит только так, или повесить на сайте p2p плеер на флешеке.
цитата
25/03/13 в 12:24
Lexikon
как я понял парсить не по средствам curl это проблемотично. Я попробовал вытягивать все через file_get_contents
сделал простенькую функцию
function parser($urlContent,$startContent,$endContent) {
$content = file_get_contents($urlContent);
$posOpen = strpos($content, $startContent);
$content = substr($content, $posOpen);
$posClose = strpos($content, $endContent);
$resultat = substr($content, 0, $posClose);
return $resultat;
}
все доставет что нужно, но вот проблема возникает тогда когда страницы не существует, вот тут вылазят ошибки и х.з. как сделать так чтоб сначала проходила проверка на существование страницы, пробовал чтение зоголовков но один хер получается ошибки.
цитата
25/03/13 в 16:19
Дартаньян
Lexikon:
if(($content = file_get_contents($urlContent))===false) return false;
цитата
25/03/13 в 17:28
johndoe2
Lexikon писал:
но вот проблема возникает тогда когда страницы не существует
file_get_contents === false, если статус ответа плохой.
если нужно заглянуть в заголовки после вызова file_get_contents, смотри в переменную $http_response_header (устанавливается после вызова http-обёрток вроде file_get_contents(http://...))
если редирект в ответ на запрос не нужен, можно выключить авторедирект
Код:
$opts = array('http' =>
array(
'method' => 'GET',
'max_redirects' => 0,//это 5.1.0+. для 5.3.4+ можно 'follow_location' => 0
)
);
$context = stream_context_create($opts);
$result = file_get_contents('http://...', false, $context);
цитата
25/03/13 в 17:36
johndoe2
Оффтопик:
дубль
цитата
25/03/13 в 18:41
Lexikon
я пока отсутствовал вышел из положения
if (!file_get_contents($url)) {
echo "Error Page: $url - Not Found!"."<br>";
}
Но в моем варианте предупреждения выводятся, я их просто отрубил
error_reporting(0);
error_reporting(E_ERROR | E_PARSE);
завтра просмотрю то что вы подсказали
спасибо!
цитата
25/03/13 в 22:54
Дартаньян
Lexikon:
ставь @ перед file_get_contents
цитата
26/03/13 в 12:29
Lexikon
Дохера времени уходит на парсиг. Скрипт стоит на локальной машине.
Вобще структура у тьюба который поставил на парсинг достаточно простая, и как я заметил примерно 40% страниц которые уже прошел парсер либо недоступны либо на них отсутствует контент.
Если сей скрипт запустить на сервере бендвича он сожрет очень много
цитата
26/03/13 в 13:04
S_Flash
Отличные выводы! Главное, своевременные!
цитата
26/03/13 в 14:14
Дартаньян
Lexikon:
смотри в сторону курла, если там где нет контента 404, збс просто откидуй =).
цитата
26/03/13 в 14:30
Lexikon
Дартаньян писал:
Lexikon:
смотри в сторону курла, если там где нет контента 404, збс просто откидуй =).
не, там не 404, там существует страница, но на странице нет то что нужно, просто написано что этот контент перенесен в категории или что то подобное.
у меня код который ищет вхождение на странице, вот кусок кода из цикла
if (!file_get_contents($url)) {
echo "Error Page: $url - Not Found!"."<br>";
}
else {
$entry = strpos(file_get_contents($url), '<div id="vidPoster" class="hidden">');
if ($entry === false) {
echo "Page $url Exists But There is No Content!"."<br>";
} else {
$f = fopen("./data.dat", "a");
fwrite($f, $url. "\r\n");
fclose($f);
}
код просто проверяет доступность страницы и возможность парсинга с этой страницы контента.
Если все соответствует условию то данный ЮРЛ пишется в файл
затем запущу парсер по этим адресам, хотя конечно можно было это все в один код собрать, но пока так играюсь
Мне вот интересно запросы ведь идут на тьюб, эти запросы не заебут их, ведь IP один и тот же
вот еще скорость работы интересна. В сутки обрабатывается примерно 80-90к страниц х.з. мало ли это? Полагаю тут еще от скорости соединения зависит. У меня провайдер больше 1,5мбит/сек не дает.
цитата
26/03/13 в 18:10
Дартаньян
вот зачем тебе два раза дергать контент?
if (!file_get_contents($url)) {
echo "Error Page: $url - Not Found!"."<br>";
}
else {
$entry = strpos(file_get_contents($url), '<div id="vidPoster" class="hidden">');
а нужно
if(($content = file_get_contents($urlContent))===false):
echo "Error Page: $url - Not Found!"."<br>";
else:
$entry = strpos($content, '<div id="vidPoster" class="hidden">');
так ты в половину снизишь той нагрузки и трафик что у тебя сейчас есть.
цитата
26/03/13 в 18:42
Lexikon
Спасибо! т.е. загнать file_get_contents($url) в переменную и потом работать с ней чтоб не запускать постоянно функцию, верно понял смысл?
Получается в моем варианте страница к примеру весит 2мб и я ее один раз тяну, потом снова тяну и уже сжираю не 2мб и в 2 раза больше времени на ожидание.
кстати вот этот кусок
else {
$f = fopen("./data.dat", "a");
fwrite($f, $url. "\r\n");
fclose($f);
}
можно заменить
else {
file_put_contents("./data.dat", $url."\r\n")
}
это как то ускорит процесс или просто сократит код?
цитата
26/03/13 в 23:11
Дартаньян
Lexikon:
ты будешь затирать файл каждый раз.
цитата
27/03/13 в 07:36
Lexikon
а чет я про это и не подумал
цитата
27/03/13 в 11:41
Дартаньян
Lexikon:
добавь третим агрументом file_put FILE_APPEND и он его будет дописывать.
Стр.
1
,
2
>
последняя »
Новая тема
Ответить
Эта страница в полной версии