|
|
|
| Привет! Граблю страничку, по максимальному всё обрезал, оставил только текст. Но на самом деле то это текст во всевозможных тегах. Каким образом при граблении внутри скрипта сразу превратить отграбленный текст в чистый текст :) Сохранить переходы, так как там данные в таблице.
Заранее спасибо, надеюсь объяснил правильно и понятно. | |
|
|
|
|
|
|
|
для: mr Bin
(22.05.2007 в 15:20)
| | Отфильтруйте ненужные теги с помощью регулярных выражений, а можно на текст отграбленный посмотреть? | |
|
|
|
|
|
|
|
для: 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>
|
Проблема ещё в том, что где-то есть картинка, а где-то её нет. Подгадать, бкдет ли картинка или нет невозможно. Количество пунктов в таблице тоже каждый раз разное.. Вот.. | |
|
|
|
|
|
|
|
для: mr Bin
(22.05.2007 в 18:16)
| | И какие теги надо удалить, что-то я не понял, чего надо добиться, вырвать текст и отправить в БД?
или разметку таблицы оставить, а убрать <a href=""></a> <b></b>?
P.S. Дайте адрес страницы которую грабите...... | |
|
|
|
|
|
|
|
для: mefestofel
(22.05.2007 в 20:06)
| | Вы правильно поняли, нужно просто выбрать текст и записать в бд.
Создавая тему, удмал есть какая-либо функция отделить текст от всего остального, а данный вопрос уже идёт в регулярку..
Поэтому нужен пример регулярки, с которой я всё мучаюсь и не могу разобраться...
p.s. Данная таблица - это уже отграбленный код - поэтому страница не поможет, но если поможет, то вот страница которую граблю - тв программа на маил ру :)
Вот здесь снизу мне уже помогли, чтобы отфарматировать текстовый список:
http://www.softtime.ru/forum/read.php?id_forum=6&id_theme=37578&page=1
поэтому проблема только в том, чтобы отделить текст от тэгов. | |
|
|
|
|
|
|
|
для: mr Bin
(22.05.2007 в 22:42)
| | Повторю еще раз, дайте мне ссылку на страницу которую Вы грабите, именно ссылку... | |
|
|
|
|
|
|
|
|
для: 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);
?>
|
Ссылки можете использовать для того чтобы програбить др. страницы | |
|
|
|
|
|
|
|
для: mefestofel
(23.05.2007 в 00:01)
| | Спасибо, брат! Видел я такой скрипт для другова примера, но не разобрался :) Ща буду вникать, и ещё раз спасибо! | |
|
|
|
|
|
|
|
для: mr Bin
(23.05.2007 в 00:09)
| | > Видел я такой скрипт для другова примера
Наверное мой...
Не за что, обращайтесь... | |
|
|
|
|
|
|
|
для: mr Bin
(22.05.2007 в 15:20)
| | да всего ничего, напише движок браузера и всё.. можно даже текстовый ;-) | |
|
|
|
|
|
|
|
для: mr Bin
(22.05.2007 в 15:20)
| | все что между "<" и ">" заменять на "" | |
|
|
|
|
|
|
|
для: CrazyAngel
(22.05.2007 в 17:04)
| | Хм, впринципе идея. Не могли бы более способствующе помочь :)
Ещё же надо сохранить построчность, тоесть чтобы записи были как и в таблице, столбиком.. а не сплошным тестом.. | |
|
|
|
|
|
|
|
для: 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
единственный скользкий момент - замена разделителя "|" на "/". (если символ "|" встречается в тексте - таблица поплывет)
если символ "|" внутри текста критичен - нужно брать другой идентификатор разделителя ячеек | |
|
|
|