ФорумПрограммированиеPHP для идиотов → Помогите разобраться с парсингом html-страниц

Помогите разобраться с парсингом html-страниц

  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 12 февраля 2010 г. 13:27, спустя 6 минут 3 секунды

    SpartakuS,
    #<td>(.*?)</td>#
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 12 февраля 2010 г. 13:31, спустя 4 минуты 25 секунд

    gvik,
    Лучше результат сделать сделать примерно так (часть твоего кода скопипасчу)
    <?php
    dir = 'D:/SCT/SCT/KATALOGSCT/BREMSE/';
    foreach(glob($dir . '*.HTML') as $file) {
       $f = fopen($file, "rt");
       $lines = explode("\n", fread($f, filesize($file)));
       echo "Файл: ".$file;
       foreach ($lines as $line)
           {
                preg_match_all("#<textarea.*>(.*)</textarea>#iUs", $tvoy_html, $output_array_textareas);
                preg_match_all("#<img.*src.*=.*\\\"(.*)\\\".*>#iUs", $tvoy_html, $output_array_imgs);
                foreach ($output_array_textareas as $textarea)
                {
                       echo "<br />Код из textarea: " . $textarea;
                }
                 foreach ($output_array_imgs as $img)
                {
                       echo "<br />Код из img: " . $img;
                }
           }
    }
    ?>

    Спустя 62 сек.
    adw0rd, я просто не знал про это. То есть он делает жадной только эту часть?
  • gvik

    Сообщения: 137 Репутация: N Группа: Кто попало

    Spritz 12 февраля 2010 г. 13:49, спустя 17 минут 15 секунд


    Нахуя такой код писать, когда все можно вот так сделать?

    я же и попросил помощи потому что сам в тупике
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 12 февраля 2010 г. 13:51, спустя 2 минуты 5 секунд

    SpartakuS, да
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 12 февраля 2010 г. 14:04, спустя 12 минут 43 секунды

    gvik, ну я тебе уже даже код написл :)
    ЭДВО, спасибо.
  • gvik

    Сообщения: 137 Репутация: N Группа: Кто попало

    Spritz 12 февраля 2010 г. 15:42, спустя 1 час 38 минут 4 секунды


    gvik, ну я тебе уже даже код написл :)
    ЭДВО, спасибо.

    это я написал не видев предыдущих сообщений
    SpartakuS, спс большое за код, ща поправлю и будет работать
  • gvik

    Сообщения: 137 Репутация: N Группа: Кто попало

    Spritz 12 февраля 2010 г. 16:15, спустя 33 минуты 53 секунды

    вот как я подправил, но массивы всё равно пустые

    preg_match_all("#<textarea.*>(.*)</textarea>(</td>.*)#iUs", $line, $output_array_textareas);
    preg_match_all("#<img.*src.*=.*\\\"(.*)\\\".*>#iUs", $line, $output_array_imgs);

  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 12 февраля 2010 г. 16:21, спустя 5 минут 39 секунд

    Давай код хтмл файла. И скажи какие тебе значения ужно от туда выдрать
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 12 февраля 2010 г. 16:48, спустя 27 минут 1 секунду

    Мой вариант работает прекрасно. Только картинки выделяются 3. Как найдешь чем исключительна та картинка которая нужна - пиши)
    Спустя 77 сек.
    Твой вариант тоже работает. Но не правильно.
  • gvik

    Сообщения: 137 Репутация: N Группа: Кто попало

    Spritz 12 февраля 2010 г. 16:59, спустя 10 минут 34 секунды

    а у меня пустые массивы после preg_macth_all
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 12 февраля 2010 г. 16:59, спустя 37 секунд


    а у меня пустые массивы после preg_macth_all
    значит паттерн некорректен
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 12 февраля 2010 г. 17:01, спустя 1 минуту 28 секунд

    gvik, http://www.pyha.ru/fishki/regexp/
    Проверь
  • gvik

    Сообщения: 137 Репутация: N Группа: Кто попало

    Spritz 12 февраля 2010 г. 17:04, спустя 3 минуты 23 секунды

    Вот код
    <?php
    $dir = 'D:/SCT/SCT2/';
    foreach(glob($dir . '*.HTML') as $file) {
      $f = fopen($file, "rt");
      $lines = explode("\n", fread($f, filesize($file)));
      echo "Файл: ".$file;
      foreach ($lines as $line)
           {
                preg_match_all("#<textarea.*>(.*)</textarea>#iUs", $line, $output_array_textareas);
                preg_match_all("#<img.*src.*=.*\\\"(.*)\\\".*>#iUs", $line, $output_array_imgs);
                foreach ($output_array_textareas as $textarea)
                {
                       echo "<br />Код из textarea: " . $textarea;
                }
                 foreach ($output_array_imgs as $img)
                {
                       echo "<br />Код из img: " . $img;
                }
           }
     }
    ?>

    вот результат
    Файл: D:/SCT/SCT2/11008.HTML
    Код из textarea: Array
    Код из textarea: Array
    Код из img: Array
    Код из img: Array
    Код из textarea: Array
    Код из textarea: Array
    Код из img: Array
    Код из img: Array
    и так далее
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 12 февраля 2010 г. 17:07, спустя 2 минуты 21 секунду

    Тупанул. Сори.
    foreach ($output_array_textareas[1] as $textarea)
    foreach ($output_array_imgs[1] as $img)
  • gvik

    Сообщения: 137 Репутация: N Группа: Кто попало

    Spritz 12 февраля 2010 г. 17:07, спустя 51 секунду

    убейте меня, на ПЫХЕ регулярка работает, а так не работает(((
    Спустя 47 сек.
    спс уже увидел

Пожалуйста, авторизуйтесь, чтобы написать комментарий!