Парсинг таблицы

Тема в разделе "PHP", создана пользователем apekoff, 13 июл 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. apekoff

    apekoff Создатель

    Регистр.:
    19 авг 2008
    Сообщения:
    40
    Симпатии:
    1
    Привет всем !
    Пользуюсь Human Emulator,вроде бы особых знаний Php не нужно,но...
    Вот не давно решил для себя написать скрипт для парсинга кейвордов с хттп://conversion.7search.com/scripts/advertisertools/keywordsuggestion.aspx вообщем такая беда у меня - пытаюсь сохранить все кейворды методом -
    $res = $webpage->get_source($as_text); //получаем код страницы
    $p1 = strpos($res,"style=\"border-width:0px;font-family:Arial;font-size:10pt;width:100%;\">");
    $p2 = strpos($res,"<p align=\"center\">");
    $s = substr($res, $p1+72, $p2-$p1-72);
    preg_match_all('/\<a href\=.+?\?(.+?)\'\>(.+?)\<\/a/i', $res, $matches);
    var_dump($matches);
    получаю все кейворды в виде массива . Когда пытаюсь сохранить $matches в текстовый файл , у меня в нем получается запись "ArrayArrayArray"
    Я так понимаю нужно преобразовать массив в текст.Ммм как это сделать ?
    Еще пробовал такой вариант -
    $dom = new domDocument;
    $dom->loadHTML($res);
    $dom->preserveWhiteSpace = false;
    $tables = $dom->getElementsByTagName('table');
    $rows = $tables->item(0)->getElementsByTagName('tr');
    foreach ($rows as $row)
    {
    $cols = $row->getElementsByTagName('td');
    echo $cols->item(0)->nodeValue.'<br />';
    echo $cols->item(1)->nodeValue.'<br />';
    echo '<hr />';
    }
    эмм нашел это тут - http://www.phpro.org/examples/Parse-HTML-With-PHP-And-DOM.html
    эмм получаю в режиме отладки - ВСЕ в текстовом формате , но кроме таблицы
    Может кто слакивался ? Прошу помочь разобраться :)
     
  2. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    Это зависит от отого, в каком формате тебе нужно раписать в файл. Например
    PHP:
    $content ='';
    foreach(
    $matches[1] as $id=>$url){
     
    $content .='url:'.$url.';text:'.$r[2][$id]."\n";
    }
    Можно использовать DOM, но мне кажется это труднее.
     
  3. apekoff

    apekoff Создатель

    Регистр.:
    19 авг 2008
    Сообщения:
    40
    Симпатии:
    1
    Эмм а куда простите это вставляется ?
    вот весь код моего скрипта на этапе копирования кеев-
    $res = $webpage->get_source($as_text); //получаем код страницы

    $p1 = strpos($res,"style=\"border-width:0px;font-family:Arial;font-size:10pt;width:100%;\">");

    $p2 = strpos($res,"<p align=\"center\">");

    $s = substr($res, $p1+72, $p2-$p1-72);

    preg_match_all('/\<a href\=.+?\?(.+?)\'\>(.+?)\<\/a/i', $res, $matches);
    var_dump($matches);


    AddFile("test.txt",$s);

    куда простите вставлять ваш код ?-
    $content ='';
    foreach($matches[1] as $id=>$url){
    $content .='url:'.$url.';text:'.$r[2][$id]."\n";
    }
    Извините опять же , ну не силен я пока в PHP
    Кстати у меня почему то не работает панелька со смайликами ,шрифтами и пхп код не могу поставить в виде цитаты:( так что извините опять же
     
  4. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    Значит так
    Можно использовать теги [PHP ] [ /PHP] - только без пробелов
     
  5. apekoff

    apekoff Создатель

    Регистр.:
    19 авг 2008
    Сообщения:
    40
    Симпатии:
    1
    Вот что у меня получилось ,заменил на этот код
    PHP:
    $res $webpage->get_source($as_text); //получаем код страницы

    preg_match_all("#<a href='(keywordsuggestion\.aspx\?q=(.*?))'>#is"$res$matches);
    $content ='';
    foreach(
    $matches[1] as $id=>$url){
     
    $content .='url:'.$url.';text:'.$r[2][$id]."\n";
    }
    когда вывожу
    PHP:
    echo $content;
    в окне отладки у меня следующее это по кейворду "billie mays" -
    все в одну строчку ..
    как мне каждый кейворд представить в чистом виде и каждый в новой строчке
     
  6. D@nil

    D@nil

    Регистр.:
    1 окт 2006
    Сообщения:
    338
    Симпатии:
    122
    PHP:
    echo "<pre>";
    echo 
    $content;  
    или открыть исходный код страницы
     
  7. apekoff

    apekoff Создатель

    Регистр.:
    19 авг 2008
    Сообщения:
    40
    Симпатии:
    1
    не канает .. в отладке то же самое ...

    Добавлено через 2 минуты
    может быть существует какой нить все таки вариант чтобы целиком сохранаять просто таблицу , а то я уже с этими регулярками кажется скоро кончусь:)
     
  8. D@nil

    D@nil

    Регистр.:
    1 окт 2006
    Сообщения:
    338
    Симпатии:
    122
    PHP:
    //код
     
    $content .='url:'.$url.';text:'.$r[2][$id]."\n"
    //замени на 
     
    file_put_contents('out.txt','url:'.$url.';text:'.$r[2][$id]."\n"FILE_APPEND);
     
  9. apekoff

    apekoff Создатель

    Регистр.:
    19 авг 2008
    Сообщения:
    40
    Симпатии:
    1
    опять не канает :(
    записывает локально тоже самое ,тоесть все кеи в строчку .И сами кеи в виде
    как сделать так -
     
  10. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    Ты смотриш обычным блокнотом? Просто он может не воспринемать один перенос строки \n. Единственное там $matches а не $r
    PHP:
     
    file_put_contents
    ('out.txt',$matches[2][$id]."\r\n"FILE_APPEND);
     
     
    apekoff нравится это.
Статус темы:
Закрыта.