Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Парсер 
:(
    Опции темы
Lacoste1024
Дата 7.8.2012, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 20.3.2011

Репутация: нет
Всего: 1



Здравствуйте, форумчане! Я пишу парсер на php. Структура парсируемых страниц следующая:
Код

<html>
<!-- Какой-то код -->
  <table>
    <tr>
      <td> ... </td>
      <td> Да</td>
    </tr>
    <tr>
      <td> ... </td>
      <td> Нет</td>
    </tr>
    <!-- Ещё множество таких же строк -->
  </table>

</html>


Мне нужно вывести только те строки, в которых содержится ячейка "Да". Я попытался что-то сделать, но честно говоря в php разбираюсь плохо и ничего не получилось
Код

<?php
    $html = file_get_contents("some_site");
    preg_match_all("/\<table\>/", $html, $tables);    

    for ($i = 0; $i < array_count_values($tables); $i++) {
        $show = preg_match("<td> Да</td>", $table[i]);
        if ($show) echo $table[i];
    }
?>

В file_get_contents я указывал существующий сайт. Здесь параметр этой функции я заменил.
P.S. Подскажите в чём проблема или (даже лучше) напишите код для моего случая.
Заранее спасибо!
PM MAIL   Вверх
etc
Дата 8.8.2012, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


FCZ
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.2.2005
Где: Красногорск

Репутация: нет
Всего: 3



Lacoste1024,  юзай php simple html dom
там будет просто: 
Код

foreach($html->find('table') as $element) 
       echo $element->innertext . '<br>';

 
PM WWW ICQ   Вверх
baldina
Дата 8.8.2012, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



Код

$html = file_get_contents("some_site");
echo preg_replace ('|<tr>[^(?:Да)]*</tr>|u', '', $html);


PM MAIL   Вверх
s1lver
Дата 10.8.2012, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



А если парсить все что содержится между конкретным тегом, а потом проверять что там находится. Если совпало с тем что нужно, то выводить на экран. 


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
etc
Дата 10.8.2012, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


FCZ
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.2.2005
Где: Красногорск

Репутация: нет
Всего: 3



s1lver

для строки вида: <div>foo <b>bar</b></div>

при использовании библиотеки "php simple html dom"
Код

$var1 = 'Искомый текст';


foreach($html->find('div') as $element) 
       $var =  $element->plaintext;
//plaintext выводит голый текст удаляя все теги.


без этой библиотеки:

Код

preg_match('#<div>([^<]+)<b>([^<]+)</b></div>#U',$html,$list);
$var = $list[1].' '.$list[2];


выйдет результат "foo bar"

Код

//проверяем на соответствие
if (strcasecmp($var1, $var) == 0) {
    echo 'Строка найдена выводим её '.$var;
}


как то так.


Это сообщение отредактировал(а) etc - 10.8.2012, 12:17
PM WWW ICQ   Вверх
sorymax
Дата 14.8.2012, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 14.8.2012

Репутация: нет
Всего: нет



ОО! Как раз то, что я искал. Спасибо!
PM MAIL WWW   Вверх
s1lver
Дата 16.8.2012, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



Блин, ситуация...


Есть страница которая имеет два положения, в первом выводит сообщение в теге <h3>, во втором в <h2>. В зависимости от состояния необходимо получать текст из этих тегов.

Набросал:

Код

$url = 'http://';

$start = '<h3>';

$finish = '</h3>';

$content = file_get_contents($url);

$position = strpos($content, $start);

$content = substr($content, $position);
$position = strpos($content, $finish);

$content = substr($content, 0, $position);

$content = strip_tags($content);

if ($content == "TEXT")
{
    echo "OK";
}


а как можно обработать второй тег?  smile 

Это сообщение отредактировал(а) s1lver - 16.8.2012, 09:27


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
s1lver
Дата 16.8.2012, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



Вот пришло на ум такое пока


Код

if ($position === false)
{
echo "Teg H3 not found";
} elseif ($position ==true)
{
echo "Teg H3 found";


 smile 


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1403 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.