X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Помогите с simple HTML DOM - парсинг таблицы (не всей).
scanread
scanread
Topic Starter сообщение 14.11.2012, 23:48; Ответить: scanread
Сообщение #1


В общем, кое-чего методом тыка вышло, кое-чего нет, все равно пока никак не могу вкурить неких деталей.

Есть таблица вида:

№ п/п, Картинка, Ссылка (<a href="/faq.html">Text</a>), Картинка

Т.е., 4 столбца, хотя в реальности в таблице 5 столбцов, но 5 столбец парсить не надо.

Вывести 3 столбец с нормальным видом ссылки и текстом вывожу:

if($html->innertext!='' and count($html->find('a'))){
    foreach($html->find('a[class=pi]') as $a){
        echo '<a href="http://www.site.ru/'.$a->href.'">'.$a->plaintext.'</a></br>';
                }
        }


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

$es = $html->find('table.wb td',6);
$ee = $html->find('table.wb td',7);
$eee = $html->find('table.wb td',8);

echo $es;
echo $ee;
echo $eee;


Сколько строк в таблице я не знаю, table.wb td',6 начал с 6, поскольку есть несколько таблиц с тем же классом, и их парсить нет нужды. Начал с той, с которой надо. В итоге выходит спарсенная первая строка:

№ п/п, Картинка, Ссылка (но вида идет не как site.ru/faq.html, а как mytest/faq.html), Картинка

Как прописать правильный линк к этому парсингу в таблицу я не знаю (столбец Ссылка), только отдельно выше написал как выводил. И хотелось бы как-то упростить парсинг таблицы размером в 4(5 столбцов на странице, откуда надо парсить) столбца на N строчек.

В последующем надо будет чтобы скрипт переходил по 3 столбцу (по ссылке) и парсил некую текстовую строчку, и заносил ее в 5 столбец.

Помогите плз кто чем может каким советом дельным. Заранее благодарю.


--------------------
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
elche
elche
сообщение 15.11.2012, 1:42; Ответить: elche
Сообщение #2


(scanread @ 14.11.2012, 23:48) *
Как прописать правильный линк

в выше примере вы же пишите: <a href="http://www.site.ru/ , т.е. указываете точно сайт-источник (ссылки похоже относительные), так и тут нужно его указывать, например так (для первого варината) $es=str_replace('href="','href="http://site.ru/',$es); выриант не шибко хорош, но на безърыбье и рак рыба (если в строке более 1 ссылки то менять будет у всех).


(scanread @ 14.11.2012, 23:48) *
как-то упростить парсинг таблицы


проблема в том, что не знаете сколько будет строк?

если да, тогда так:
$c=6;
$alltext='';
while (true)
{
$str=$html->find('table.wb td',$c);
if (!empty($str))
{
//тут кстати можно и ссылки поменять: $str=str_replace('href="','href="http://site.ru/',$str);
$alltext.= $str;}
else
{
break;
}
}
echo $alltext;

хотя я может все не так понял

Сообщение отредактировал elche - 15.11.2012, 1:43


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
scanread
scanread
Topic Starter сообщение 15.11.2012, 11:13; Ответить: scanread
Сообщение #3


elche, по такому запросу оно 5 минут обрабатывает и времени на выполнения не хватает.

В общем, таблица:

Прикрепленное изображение


Вот код первой строки, дальше остальные по аналогии такие же:

Прикрепленное изображение


Синим выделена строка, в которой необходимо делать замену ее, к сайту добавить окончание, чтобы можно было перейти по ней. Как Вы к примеру писали:

$str=str_replace('href="','href="http://site.ru/',$str);


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
elche
elche
сообщение 15.11.2012, 12:17; Ответить: elche
Сообщение #4


(scanread @ 15.11.2012, 11:13) *
5 минут обрабатывает

{
//тут кстати можно и ссылки поменять: $str=str_replace('href="','href="http://site.ru/',$str);
$alltext.= $str;
$c++;
}

да вот $c++ забыл. поставте, попробуйте


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
scanread
scanread
Topic Starter сообщение 15.11.2012, 13:55; Ответить: scanread
Сообщение #5


elche, спс, выводит, только
$str=str_replace('href="','href="http://site.ru/',$str);
не работает, и выводит не таблицей, а все в одну строку....


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
elche
elche
сообщение 15.11.2012, 21:39; Ответить: elche
Сообщение #6


(scanread @ 15.11.2012, 13:55) *
выводит не таблицей

а нужно таблицей? я просто не помню что бы уточняли на этот счет. тут нужно смотреть что получается на выходе. Да и сами запросы к документу нужно менять, слишком не правильные они
по поводу не работает $str=str_replace('href="','href="http://site.ru/',$str);, вы раскомментировали все да ? напишите кусок получившейся строки.


--------------------


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
scanread
scanread
Topic Starter сообщение 15.11.2012, 23:07; Ответить: scanread
Сообщение #7


elche, отключил я все же ДОМ, пошел через выражения. Сделал так:

preg_match("#<table class=wb width='80%' cellpadding=3 align=center><tr><td class=wbwhite width=30>(.*?)</table></td></tr></table>#is", $file, $matches);
//вывод таблицы
var_dump($matches[0]);


получил всю таблицу. Итог: 5 столбцов и 101 строка. Теперь надо как-то ее чтобы было:

array(4) { [0]=> string(159) "С какой бы стороны света не шел усталый путник, каждый, оказавшись впервые в Цитадели Ордена Равновесия, невольно замирает на пороге.
Великим искусством" [1]=> string(31) "С какой бы стороны света не шел" [2]=> string(110) " усталый путник, каждый, оказавшись впервые в Цитадели Ордена Равновесия, невольно замирает на пороге.
" [3]=> string(18) "Великим искусством" }


Т.е., разбить на строки. Но надо не 5 столбцов, а 5 столбец еще выкинуть. И вот дальше ламаю голову, как через регулярку это сделать. Что не соображается пока ничего sad.gif

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


Сообщение отредактировал scanread - 15.11.2012, 23:18


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыТрафик в Телеграм (рассылка, инвайт, парсинг)
9 gelt 2847 8.4.2024, 15:28
автор: gelt
Горячая тема (нет новых ответов) Вёрстка HTML-писем
30 Vampler 29361 27.3.2024, 12:41
автор: Vampler
Открытая тема (нет новых ответов) Помогите вспомнить рекламного бота Телеграм для обмена рекламой
0 Mixatraider 725 21.2.2024, 23:42
автор: Mixatraider
Открытая тема (нет новых ответов) Разработка/доработка сайтов Wordpress, HTML/CSS/JS
Вёрстка, перенос на WP, правки
9 malamut 3461 25.1.2024, 14:36
автор: malamut
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3401 19.12.2023, 18:55
автор: CULA


 



RSS Текстовая версия Сейчас: 20.4.2024, 2:26
Дизайн