Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Слизнуть только текст

Сообщения:  [1-10]   [11-14] 

 
 автор: HeNuS   (23.05.2007 в 18:19)   письмо автору
 
   для: mr Bin   (22.05.2007 в 18:17)
 

html таблицы в своей структуре имеют все необходимые данные, для того, чтобы их перевести в текст с разделителями\массив\etc...

поэтому забываем про медленный preg_match_all и:


// перевод html таблицы в текст с разделителями
// итоговый текст содержит :
// разделитель строк - символ переноса (\n) 
// разделитель ячеек - симов "|"
function htmltable_to_array ($string) {
    $temp_data=preg_match("|<table(.*?)<\/table>|is", $string,$out);  // проверяю, таблица ли это
    if ($temp_data==1) {
    $string=str_replace("|","/",$string);               // заменяю символ разделителя 
    $string=str_replace("\r"," ",$string);              // убираю символы переноса раз
    $string=str_replace("\n"," ",$string);              // убираю символы переноса два
    $string=preg_replace("/( |\t)+/"," ",$string);      // сжимаю пробелы и табуляцию 
    $string=str_replace("</tr>","\n",$string);          // делаю разделитель строк
    $string=str_replace("</td>","|",$string);           // делаю разделитель ячеек  
    $string=preg_replace ("@</?[^>]*>*@", "", $string); // убиваю все теги
    $string=preg_replace("/(\n)+/","\n",$string);       // убиваю пустые строки
    $string=preg_replace("/\|\n/","\n",$string);        // убиваю пустые ячейки в конце
    return $string;
    }
    else return false;
}


результат -
1|Текст 1
2|Текст 2
3|Текст 3
4|Текст 4

единственный скользкий момент - замена разделителя "|" на "/". (если символ "|" встречается в тексте - таблица поплывет)
если символ "|" внутри текста критичен - нужно брать другой идентификатор разделителя ячеек

   
 
 автор: mefestofel   (23.05.2007 в 00:43)   письмо автору
 
   для: mr Bin   (23.05.2007 в 00:09)
 

> Видел я такой скрипт для другова примера
Наверное мой...

Не за что, обращайтесь...

   
 
 автор: mr Bin   (23.05.2007 в 00:09)   письмо автору
 
   для: mefestofel   (23.05.2007 в 00:01)
 

Спасибо, брат! Видел я такой скрипт для другова примера, но не разобрался :) Ща буду вникать, и ещё раз спасибо!

   
 
 автор: mefestofel   (23.05.2007 в 00:01)   письмо автору
 
   для: mr Bin   (22.05.2007 в 23:37)
 

Вот Ваш код:

<?
function GetInfo($url)
{
$content file_get_contents($url);
set_time_limit(600);
$pattern "|<td valign=top class=time>([^<]+)</td>[\s]*<td>[\s]*<a href=\"([^\"]+)\">([^<]+)</a>[\s]*</td>[\s]*|is";
preg_match_all($pattern$content$out);
//print_r($out);
  
for ($i 0$i count($out[1]); $i++)
  {
    print 
$out[1][$i]."<br>";   // время
     
print $out[2][$i]."<br>";   // ссылка
    
print $out[3][$i]."<br>";   // название
    // код записи в БД
  
}
}
$url "http://tv.mail.ru/?date=2007-05-23&gosetup=1&period=3&channel=1";
GetInfo($url);
?>

Ссылки можете использовать для того чтобы програбить др. страницы

   
 
 автор: mr Bin   (22.05.2007 в 23:37)   письмо автору
 
   для: mefestofel   (22.05.2007 в 23:30)
 

http://tv.mail.ru/?date=2007-05-23&gosetup=1&period=3&channel=1

   
 
 автор: mefestofel   (22.05.2007 в 23:30)   письмо автору
 
   для: mr Bin   (22.05.2007 в 22:42)
 

Повторю еще раз, дайте мне ссылку на страницу которую Вы грабите, именно ссылку...

   
 
 автор: mr Bin   (22.05.2007 в 22:42)   письмо автору
 
   для: mefestofel   (22.05.2007 в 20:06)
 

Вы правильно поняли, нужно просто выбрать текст и записать в бд.
Создавая тему, удмал есть какая-либо функция отделить текст от всего остального, а данный вопрос уже идёт в регулярку..
Поэтому нужен пример регулярки, с которой я всё мучаюсь и не могу разобраться...

p.s. Данная таблица - это уже отграбленный код - поэтому страница не поможет, но если поможет, то вот страница которую граблю - тв программа на маил ру :)

Вот здесь снизу мне уже помогли, чтобы отфарматировать текстовый список:
http://www.softtime.ru/forum/read.php?id_forum=6&id_theme=37578&page=1
поэтому проблема только в том, чтобы отделить текст от тэгов.

   
 
 автор: mefestofel   (22.05.2007 в 20:06)   письмо автору
 
   для: mr Bin   (22.05.2007 в 18:16)
 

И какие теги надо удалить, что-то я не понял, чего надо добиться, вырвать текст и отправить в БД?
или разметку таблицы оставить, а убрать <a href=""></a> <b></b>?

P.S. Дайте адрес страницы которую грабите......

   
 
 автор: mr Bin   (22.05.2007 в 18:17)   письмо автору
 
   для: CrazyAngel   (22.05.2007 в 17:04)
 

Хм, впринципе идея. Не могли бы более способствующе помочь :)
Ещё же надо сохранить построчность, тоесть чтобы записи были как и в таблице, столбиком.. а не сплошным тестом..

   
 
 автор: mr Bin   (22.05.2007 в 18:16)   письмо автору
 
   для: mefestofel   (22.05.2007 в 16:55)
 

mefestotel, конечно можно.


<table cellspacing=0 cellpadding=0>
<tr><td valign=top>1</td><td><b><a href="/inform.html?id=36"><img src="1.gif" width=16 height=16 border=0 align=absmiddle>Текст 1</a></b></td></tr>
                    
<tr><td valign=top>2</td><td><a href="/inform.html?id=37">Текст 2</a></td></tr>

<tr><td valign=top>3</td><td><a href="/inform.html?id=38">Текст 3</a></td></tr>
                    
<tr><td valign=top>4</td><td><b><a href="/inform.html?id=39"><img src="1.gif" width=16 height=16 border=0 align=absmiddle>Текст 4</a></b></td></tr>

</table>


Проблема ещё в том, что где-то есть картинка, а где-то её нет. Подгадать, бкдет ли картинка или нет невозможно. Количество пунктов в таблице тоже каждый раз разное.. Вот..

   

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования