ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Грабилка новостей.
  #1  
Старый 01.11.2007, 20:10
guest3297
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме:
3887520

Репутация: 2996


По умолчанию Грабилка новостей.

Нужна грабилка новостей с секлаба, полюбому кто то заморачивался уже =) И др граб скрипт с It ресурсов.
 
Ответить с цитированием

  #2  
Старый 01.11.2007, 20:18
Shred
Участник форума
Регистрация: 22.05.2006
Сообщений: 232
Провел на форуме:
561037

Репутация: 73
По умолчанию

киберсекурити раздайт новости с линками на свою пагу, как заюзать и пример парсинга хмл-ки на пхп тут
 
Ответить с цитированием

  #3  
Старый 01.11.2007, 21:52
guest3297
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме:
3887520

Репутация: 2996


По умолчанию

Цитата:
http://www.cybersecurity.ru/inform/1.php
Странная у них кодировка...

Еще варианты?
 
Ответить с цитированием

  #4  
Старый 01.11.2007, 22:18
demonoid
Banned
Регистрация: 12.01.2007
Сообщений: 113
Провел на форуме:
4094601

Репутация: 495
По умолчанию

#Мимо пробегал,мелкие наброски
#Почему то LWP::Simple наотрез отказался работать с секлабом , как выяснилось там проверка на валидность браузера

Код:
#!perl
use strict;
use warnings;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new( agent => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.8) Gecko/20071008 Firefox/2.0.0.8' );
my $response = $ua->get('http://www.securitylab.ru/');
my $res  = $response->as_string;

my @t = $res =~m/<font class="smalltext">(.+)<\/font><\/div>/g;

foreach (@t)
{
   printcyr( "$_ \n\n");
}

sub printcyr 
{

	my $text = shift;
	$text =~ y/А-яЁё/\x80-\xaf\xe0-\xf1/;
	print $text;
}
Код:
............

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

Программистам из компании SlySoft удалось взломать улучшенную систему защиты оп
ических дисков формата Blu-ray, известную под названием BD+ и до недавнего врем
ни считавшуюся абсолютно неуязвимой для хакерских атак.
............
 
Ответить с цитированием

  #5  
Старый 01.11.2007, 22:47
guest3297
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме:
3887520

Репутация: 2996


По умолчанию

Надо на php
 
Ответить с цитированием

  #6  
Старый 01.11.2007, 23:04
halkfild
Leaders of Antichat - Level 4
Регистрация: 11.11.2005
Сообщений: 391
Провел на форуме:
7084941

Репутация: 2277
По умолчанию

тут utf8 http://www.cybersecurity.ru/inform/1.php
парсь пхп ну и переводи к нужной кодировке

если сильно нада, то позже сделаю грабер
 
Ответить с цитированием

  #7  
Старый 01.11.2007, 23:18
guest3297
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме:
3887520

Репутация: 2996


По умолчанию

Надо сделай =)
 
Ответить с цитированием

  #8  
Старый 02.11.2007, 00:49
NOmeR1
Познавший АНТИЧАТ
Регистрация: 02.06.2006
Сообщений: 1,188
Провел на форуме:
6023777

Репутация: 2642


Отправить сообщение для NOmeR1 с помощью ICQ
По умолчанию

Не трудно получилось
PHP код:
<?
$seclab 
file_get_contents('http://www.securitylab.ru/_Services/Export/RSS/news.php');
$seclab str_replace('<title>SecurityLab.ru - Новости</title>'NULL$seclab);
$seclab str_replace('<description>Защита от нападения в сети</description>'NULL$seclab);
preg_match_all('|<title>(.*)</title>|sU'$seclab$titlesPREG_SET_ORDER);
preg_match_all('|<description>(.*)</description>|sU'$seclab$contentsPREG_SET_ORDER);
for( 
$i 0$i < ((count($titles) + count($contents)) / 2); $i++ )
{
    echo(
'Название новости: '.$titles[$i][1].'<br>');
    echo(
'Новость: '.$contents[$i][0].'<br><hr><br>');
}
?>
Однако только главная страница.
 
Ответить с цитированием

  #9  
Старый 02.11.2007, 00:56
halkfild
Leaders of Antichat - Level 4
Регистрация: 11.11.2005
Сообщений: 391
Провел на форуме:
7084941

Репутация: 2277
По умолчанию

коряво но нормально парсит.. /*з.ы. исправлял старый скрипт.. мо сейчас отлажу и уберу лишнее*/

PHP код:
<?php 
error_reporting
(0);
$xmls="http://www.securitylab.ru/_Services/Export/RSS/news.php";

$news = array(); 
$currentNews null;
$index null;
function 
saxStartElement($parser,$name,$attrs)
{
 global 
$currentNews,$index,$l,$type;

 switch(
$name)
 {
 case 
'channel':
  
$news = array();
  break;
 case 
'item':
  
$currentNews = array();
  break;
  default:
  
$index $name;
 break;
  };
  
}
function 
saxEndElement($parser,$name)
{
 global 
$news,$currentNews,$index$l,$type,$ii,$index;
 
$l[$name]=$currentNews[$name];
 if ((
is_array($currentNews) && ($name=='item')))
 {
  
$news[] = $currentNews;
  
$currentNews null;
 };
 
$index null;
 
$ii++;
}

function 
saxCharacterData($parser,$data)
{
 global 
$currentNews,$index,$l;

 if ((
is_array($currentNews)) && ($index))
 
$currentNews[$index] = $data;

}

$parser xml_parser_create();
xml_set_element_handler($parser,'saxStartElement','saxEndElement');
xml_set_character_data_handler($parser,'saxCharacterData');
xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,false);
$xml join('',file($xmls));
if (!
xml_parse($parser,$xml,true)) die(sprintf('<div align=center><font size=2 face=verdana color=red>не прошел коннект</font></div>',
 
xml_error_string(xml_get_error_code($parser)),
 
xml_get_current_line_number($parser)));
xml_parser_free($parser);

foreach(
$news as $n)
{
echo 
$n['title']." - ".$n['link']." - ".$n['description']." - ".$n['pubDate']."<br><br>";
}

?>
насчет преобразования с utf8-->cp1251 использовал раньше

PHP код:
function utf8tocyr($string) { 
$result=""
for (
$c 0$c strLen($string); $c=$c+2) { 
$ub ord(subStr($string$c1)); 
$lb ord(subStr($string$c+11)); 

if (
$ub == 208) { 
if (
$lb != 81) { 
$result $result.chr($lb 48); 

else { 
$result $result.'Ё'



if (
$ub == 209) { 
if (
$lb != 91) { 
$result $result.chr($lb 112); 

else { 
$result $result.'ё'



if ((
$ub != 208) AND ($ub != 209) AND ($lb != 91) AND ($lb != 81)) { 
$result $result.chr($ub); 
$c $c-1; } 

return 
$result


Последний раз редактировалось halkfild; 02.11.2007 в 01:01..
 
Ответить с цитированием

  #10  
Старый 02.11.2007, 01:16
NOmeR1
Познавший АНТИЧАТ
Регистрация: 02.06.2006
Сообщений: 1,188
Провел на форуме:
6023777

Репутация: 2642


Отправить сообщение для NOmeR1 с помощью ICQ
По умолчанию

Попробуй тогда типо этого. только если бы знать, какая там кодировка стоит. У меня всё нормально отображается.
PHP код:
<?
$seclab 
file_get_contents('http://www.securitylab.ru/_Services/Export/RSS/news.php');
$seclab str_replace('<title>SecurityLab.ru - Новости</title>'NULL$seclab);
$seclab str_replace('<description>Защита от нападения в сети</description>'NULL$seclab);
preg_match_all('|<title>(.*)</title>|sU'$seclab$titlesPREG_SET_ORDER);
preg_match_all('|<description>(.*)</description>|sU'$seclab$contentsPREG_SET_ORDER);
for( 
$i 0$i < ((count($titles) + count($contents)) / 2); $i++ )
{
    echo(
'Название новости: '.iconv("UTF-8""WINDOWS-1251"$titles[$i][1]).'<br>');
    echo(
'Новость: '.iconv("UTF-8""WINDOWS-1251"$contents[$i][0]).'<br><hr><br>');
}
?>
Если не заработает, попробуй поизменять "UTF-8" на "KOI8-R" или "KOI8-U" вобщем попробуй как-нибудь.

В http://www.cybersecurity.ru/inform/1.php кодировка UTF-8
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу скрипт для автоматического добавления новостей.... ~Real F@ck!~ Болталка 4 27.10.2007 13:18
скрипт новостей Legion342 PHP, PERL, MySQL, JavaScript 2 29.01.2007 14:00
DataLife Engine - добавление новостей SMiX PHP, PERL, MySQL, JavaScript 0 05.08.2006 10:26



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ