Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Парсинг
цитата
23/03/13 в 11:37
 Lexikon
Текст этого сообщения доступен только зарегистрированным пользователям.
цитата
23/03/13 в 16:29
 Sterx
попробуй завтра воспроизвести файл с сегодняшней ссылкой
будешь удивлен
цитата
23/03/13 в 17:10
 Lexikon
Sterx писал:
попробуй завтра воспроизвести файл с сегодняшней ссылкой
будешь удивлен

завтра уже будет не работать я так понимаю? icon_smile.gif
как и что тогда парсят?
цитата
23/03/13 в 17:49
 Дартаньян
Lexikon: два варианта, раздебажат плеер выкуривают криптографию к прямому урлу, делают у себя так. Есть еще способ с скрытой вставкой.
цитата
23/03/13 в 21:02
 Lexikon
т.е. то что я спарсю ссылку которая в самом начале показал это все до жопы. Нужно копать по другому и средствами ПХП этого не достичь.

Касаемо скрытой вставки это как понять?

Кстати на тьюбе на каждой странице дают еще код ембеда, этот код работает и как я понял он остается постоянный. Получается можно дергать его и при кастомной генерации галь вставлять на страницу. Но в данном случае реклама и т.п. будет все что передает тот тьюб.

Касаемо моего вопроса в предыдущем посте
Парсят тьюбы путем получения доступа к прямому юрл файла?
цитата
23/03/13 в 21:42
 Sterx
варианта два
1 юзать ембеды
2 качать ролики к себе на хост со всеми вытекающими.
выбирай icon_smile.gif
цитата
23/03/13 в 21:48
 Diablo
3. парсить актуальную ссылку реалтайм на каждый запрос мувика серфером trollface.png
цитата
23/03/13 в 23:08
 Дартаньян
Lexikon: ссылка через js.
цитата
24/03/13 в 09:00
 Lexikon
Diablo II писал:
3. парсить актуальную ссылку реалтайм на каждый запрос мувика серфером trollface.png

О таком извращении мысль тоже была smail101.gif, но это не серьезно trollface.png
цитата
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;

}


все доставет что нужно, но вот проблема возникает тогда когда страницы не существует, вот тут вылазят ошибки и х.з. как сделать так чтоб сначала проходила проверка на существование страницы, пробовал чтение зоголовков но один хер получается ошибки. icon_confused.gif
цитата
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
я пока отсутствовал вышел из положения icon_smile.gif

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% страниц которые уже прошел парсер либо недоступны либо на них отсутствует контент.
Если сей скрипт запустить на сервере бендвича он сожрет очень много icon_smile.gif
цитата
26/03/13 в 13:04
 S_Flash
Отличные выводы! Главное, своевременные! icon_smile.gif
цитата
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);
      }
   


код просто проверяет доступность страницы и возможность парсинга с этой страницы контента.
Если все соответствует условию то данный ЮРЛ пишется в файл

затем запущу парсер по этим адресам, хотя конечно можно было это все в один код собрать, но пока так играюсь icon_smile.gif

Мне вот интересно запросы ведь идут на тьюб, эти запросы не заебут их, ведь 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: trollface.png ты будешь затирать файл каждый раз.
цитата
27/03/13 в 07:36
 Lexikon
icon_smile.gif а чет я про это и не подумал
цитата
27/03/13 в 11:41
 Дартаньян
Lexikon: добавь третим агрументом file_put FILE_APPEND и он его будет дописывать.
Стр. 1, 2  >  последняя »


Эта страница в полной версии