Тема: Парсинг bitsnoop*com
Всім привіт.
Мені потрібно парсити торрент bitsnoop*com, але він не дається. Приходить порожній результат.
Тобто
curl_multi_info_read повертає Array ( [msg] => 1 [result] => 7 [handle] => Resource id #14 )
а
curl_multi_getcontent порожній.
Парсер на PHP.
Параметри:
protected $curl_options = array(
CURLOPT_COOKIEJAR => '/home/m/www/tormag.git/parser/cookie.txt',
CURLOPT_COOKIEFILE => '/home/m/www/tormag.git/parser/cookie.txt',
CURLOPT_PORT => 80,
CURLOPT_RETURNTRANSFER => 1, // возвращать значение как результат функции, а не выводить в stdout
CURLOPT_BINARYTRANSFER => 1, // передавать в binary-safe
CURLOPT_CONNECTTIMEOUT => 10, // таймаут соединения ( lookup + connect )
CURLOPT_TIMEOUT => 30, // таймаут на получение данных
CURLOPT_USERAGENT => 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.1) Gecko/20090716 Ubuntu/9.04 (jaunty) Shiretoko/3.5.1',
CURLOPT_VERBOSE => 2, // уровень информирования
CURLOPT_HEADER => 0, // заголовок не получается
CURLOPT_FOLLOWLOCATION => 1, // следовать редиректам
CURLOPT_MAXREDIRS => 10, // максимальное число редиректов
CURLOPT_AUTOREFERER => 1, // при редиректе подставлять в «Referer:» значение из «Location:»
// CURLOPT_FRESH_CONNECT => 0, // каждый раз использовать новое соединение
CURLOPT_HTTPHEADER => array(
'Expect:',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9',
'Accept-Language: en-us;q=0.7,en;q=0.7',
//'Accept-Encoding: gzip,deflate', // нужно потом распаковывать. ну его пока…
'Accept-Charset: utf-8,windows-1251;q=0.7,*;q=0.5',
)
);
Функція:
protected function loadPages($urls, $callback=false, $close=false){
if(empty($this->mh))$this->mh = curl_multi_init();
if ( $this->mh === false ) return false;
$urls = (array)$urls;
$chs = array();
foreach ( $urls as $url ) {
$chs[] = ( $ch = curl_init() );
curl_setopt_array( $ch, $this->curl_options );
curl_setopt( $ch, CURLOPT_URL, $url );
curl_multi_add_handle( $this->mh, $ch );
}
$prev_running = $running = null;
do {
curl_multi_exec( $this->mh, $running );
if ( $running != $prev_running ) {
// получаю информацию о текущих соединениях
$info = curl_multi_info_read( $this->mh );
if ( is_array( $info ) && ( $ch = $info['handle'] ) ) {
// получаю содержимое загруженной страницы
$content = curl_multi_getcontent( $ch );
// скаченная ссылка
$url = curl_getinfo( $ch, CURLINFO_EFFECTIVE_URL );
print_r($info);
if($callback)$this->$callback($url, $content, $info['result'], $ch);
else $this->parseAndSave($url, $content, $info['result'], $ch);
}
// обновляю кешируемое число текущих активных соединений
$prev_running = $running;
}
} while ( $running > 0 );
foreach ( $chs as $ch ) {
curl_multi_remove_handle( $this->mh, $ch );
curl_close( $ch );
}
if($close){
curl_multi_close( $this->mh );
}
}
параметри CURLOPT_COOKIEJAR, CURLOPT_COOKIEFILE задані, але файл cookie.txt не створюється. права є. ОС Ubuntu.
file_get_contents повертає "It works" (привітальну сторінку апача)
функція робоча - з іншими сайтами працює.