как спарсить жж-юзеров?

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

bertolai

Гуру форума
Регистрация
21 Янв 2008
Сообщения
157
Реакции
56
как можно силами php с блога на ЖЖ спарсить ники ЖЖ-юзеров из комментов?
из html кода страницы вытащил вариатн для поиска регулярками:
PHP:
lj:user='userlj' тут_куча_разного_текста_на_ру_и_en "comment-text">Тут текст везде одинаковый.<br />
нужно 'userlj' , которые, естественно, везде разные, переложить в .txt файл.

можно спарсить и не с сайта, а, в крайнем случае, из кучи сохранённых html-страниц, или из одной html или txt-файла, но это не есть хорошо.
 
с curl
PHP:
<?php
ini_set('max_execution_time',0);
function get_web_page( $url )
{
  $uagent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8";

  $ch = curl_init( $url );

  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  // возвращает веб-страницу
  curl_setopt($ch, CURLOPT_REFERER,"http://google.com");
  curl_setopt($ch, CURLOPT_HEADER, 0);           // не возвращает заголовки
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);   // переходит по редиректам
  curl_setopt($ch, CURLOPT_ENCODING, "");        // обрабатывает все кодировки
  curl_setopt($ch, CURLOPT_USERAGENT, $uagent);  // useragent
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20); // таймаут соединения
  curl_setopt($ch, CURLOPT_TIMEOUT, 20);        // таймаут ответа
  curl_setopt($ch, CURLOPT_MAXREDIRS, 10);       // останавливаться после 10-ого редиректа

  $content = curl_exec( $ch );
  $err     = curl_errno( $ch );
  $errmsg  = curl_error( $ch );
  $header  = curl_getinfo( $ch );
  curl_close( $ch );

  $header['errno']   = $err;
  $header['errmsg']  = $errmsg;
  $header['content'] = $content;
  return $header;
}
$url="http://drugoi.livejournal.com/3520675.html";
$fp=fopen("users.txt","a+");
$result=get_web_page( $url );
$content = $result['content'];
preg_match_all('/lj:user=\'(.*?)\'/',$content,$users);
$count_users=count($users[1]);
for ($i=0;$i<$count_users;$i++){
$user = $users[1][$i];
fwrite($fp,$user."\n"); 
echo $user.'<br>';flush();ob_flush();flush();
 }
fclose($fp);
?>
без curl
PHP:
<?php
ini_set('max_execution_time',0);
$url="http://drugoi.livejournal.com/3520675.html";
$fp=fopen("users.txt","a+");
$content=file_get_contents( $url );
preg_match_all('/lj:user=\'(.*?)\'/',$content,$users);
$count_users=count($users[1]);
for ($i=0;$i<$count_users;$i++){
$user = $users[1][$i];
fwrite($fp,$user."\n"); 
echo $user.'<br>';flush();ob_flush();flush();
 }
fclose($fp);
?>
 
но ведь в обоих случаях спарсятся ники всех юзеров, так? а нужно не всех, а только тех, у которых в тексте комментария присутствует определённый, один и тот же спам-текст, как было в моём первом посте:
PHP:
"comment-text">Тут текст везде одинаковый.<br />
, чтоб разом всех ботов можно было забанить.

я правильно понял, что в приведённых примеров сбор ников будет идти со странички /3520675.html, т.е. с определённого поста в ЖЖ? и потом надо будет вставлять урл другого поста?
 
какой вопрос такой и ответ хотя пример урла дай откуда ты парсить собираешься ато ты пишешь, а я в исходном коде вижу
где такое нашли?
ааа, так это наверное от оформления ЖЖ зависит, так ЖЖ drugoi не я в пример привёл.

если контретнее, то вот оттуда надо собрать ники ботов, постящих в комментах один и тот же текст, не затронув ники остальных комментаторов:
там я вижу именно это
"comment-text">Тут текст везде одинаковый.<br />
 
работать то работает, но всё равно (по крайней мере у меня) тянет ВСЕХ юзеров, включая и автора блога. придётся чистить выходной файл руками... :(

upd.
ан не, далеко не ВСЕХ, но некоторые ненужные всё же проскакивают... может скрипт слишком быстро или слишком медленно... не успевает, короче.
 
после каждого прохода удаляй или очищай файл иначе он будет в конец дописывать новых юзверей поэтому у тебя наверное и попал админ потому как остались записи от старого прохода скрипта когда коментарии не учитывались можно конечно сделать чтобы он при каждом проходе создавал новый файл и в него записывал замени
PHP:
$fp=fopen("users.txt","a+");
на
PHP:
$fp=fopen("users.txt","w");
 
да, конечно я очищал. скрипт как то при работе "задумывается" сначало сильно, потом начинает парсить. но не всех, опять же юзеров. ощущения такие (чисто человеческие), что когда он задумывается, он чего то пропускает мимо себя...

ладно, дочищу руками.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху