[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Парсер с сохранением данных в таблицу
Godod
Здравствуйте. Не знаю в каком разделе точно нужно создать тему, поэтому если попал "не туда", прошу перенести в нужный раздел. Проблема такая. Делаю парсер и нужно, чтобы названия и текст сохранялся в базе данных. Пример такой: Есть title у какого-то сообщения и его текст. Его нужно занести в базу данных последовательно, т.е. одно сообщение - одна строка в базе данных. Есть таблица в бд и состоит она из id(AI), title, text. В качестве парсера использую simple html dom parser. Подскажите пожалуйста, как можно это сделать?



Спустя 2 минуты, 57 секунд (21.06.2012 - 20:01) alexbel2404 написал(а):
код выкладывай

Спустя 1 минута, 21 секунда (21.06.2012 - 20:03) Игорь_Vasinsky написал(а):
Цитата
нужно, чтобы названия и текст сохранялся в базе данных


ничё не понимаю))) иы пишешь парсер с сторонней библией - а как в БД записи делать не знаешь?

Спустя 54 минуты, 10 секунд (21.06.2012 - 20:57) johniek_comp написал(а):
Игорь_Vasinsky
походу он берет весь контент, и ему нужно его разбить и записать в базу

я когда парсеры делал на simplehtmldom тоже заморачивался, пришлось брать 5 блоков и запросы в цикле писать, другого выхода не было

Спустя 8 минут, 57 секунд (21.06.2012 - 21:06) Игорь_Vasinsky написал(а):
Цитата
, другого выхода не было

regexp wink.gif

Спустя 1 минута, 42 секунды (21.06.2012 - 21:08) johniek_comp написал(а):
Игорь_Vasinsky
я не умею sad.gif

Спустя 2 часа, 30 минут, 24 секунды (21.06.2012 - 23:38) Godod написал(а):
Цитата (johniek_comp @ 21.06.2012 - 17:57)
Игорь_Vasinsky
походу он берет весь контент, и ему нужно его разбить и записать в базу

я когда парсеры делал на simplehtmldom тоже заморачивался, пришлось брать 5 блоков и запросы в цикле писать, другого выхода не было

Вот-вот и я тоже делаю. RegExp... можно использовать только если не одно НО:
<div class="title">
<a
href="http://rozetka.com.ua/acer_iconia_smart_black/p192262/">
Acer Iconia Smart S300 Black
</a>
</div>
<p>
Экран 4.8" (480x1024, сенсорный) / моноблок / процессор 1 ГГц / камера 8 Мп / Bluetooth 2.1 / Wi-Fi 802.11b/g/n / 512 МБ встроенной памяти + поддержка microSDHC / разъем 3.5 мм / 3G / A-GPS / ОС Android 2.3 (Gingerbread) / 141.7x64.5x13.6 мм, 185 г / черный<br>
</p>


Вот например это мне нужно засунуть в таблицу(отдельно див и отдельно параграф). Но не всегда так идет. Может быть два параграфа идти подряд, а может и нет. Про регулярные я читал, в принципе понимаю, но вот приблизительно как сделать, не понимаю.

Спустя 11 минут, 33 секунды (21.06.2012 - 23:50) Игорь_Vasinsky написал(а):
составить паттерн, смотреть чё как идёт и брать тока нужное.


покажи полный исходник страницы и обозначь что брать нужно.

вообще так пробывал?

preg_match("#<div class=\"title\">(.*)</div>#iusU", $page, $div);

echo '<pre>'.print_r($div, 1).'</pre>';

preg_match("#</div><p>(.*)</p>#iusU", $page, $p);

echo '<pre>'.print_r($p, 1).'</pre>';

Спустя 17 минут, 41 секунда (22.06.2012 - 00:07) Godod написал(а):
Полную страничку приводить не буду, т.к. слишком большая для форума.
Что нужно брать уже обозначил вверху. Сейчас попробую.

Спустя 13 минут, 24 секунды (22.06.2012 - 00:21) Godod написал(а):
Цитата (Игорь_Vasinsky @ 21.06.2012 - 20:50)
составить паттерн, смотреть чё как идёт и брать тока нужное.


покажи полный исходник страницы и обозначь что брать нужно.

вообще так пробывал?

preg_match("#<div class=\"title\">(.*)</div>#iusU", $page, $div);

echo '<pre>'.print_r($div, 1).'</pre>';

preg_match("#</div><p>(.*)</p>#iusU", $page, $p);

echo '<pre>'.print_r($p, 1).'</pre>';

К сожалению так не выходит. Показывает вложеный тег <a> и во-втором элементе тоже самое. В общем надо все делать через regexp? Составить правильно выражение и потом полученный массив в базу загонять с помощью foreach'a?

Спустя 3 минуты, 35 секунд (22.06.2012 - 00:24) Игорь_Vasinsky написал(а):
да. корректируй паттерны.

Спустя 13 часов, 49 минут, 14 секунд (22.06.2012 - 14:13) Godod написал(а):
Так-с ну начнем) Я вообще впервые пишу регулярное выражение поэтому сильно не пинайтесь, а помогите)
В общем есть такое выражение:
preg_match("#<a href=\"http://rozetka.com.ua/[0-9a-z_]+*/[0-9a-z_]+*/\">(.*)</a>#iusU", $title, $div);
А теперь на словах, чтобы было понятно что мне надо:
Начинаться должно всегда с <a href=\"http://rozetka.com.ua/ потом может идти сколь угодно символов 0-9 или a-z или _ (нижнего подчеркивания), но должен быть хотя бы один символ; после него должен стоять / и снова должно быть сколь угодно символов 0-9 или a-z или _ (нижнего подчеркивания), но должен быть хотя бы один символ. После него обязательно должен быть / \"(экранируем кавычки), (.*)</a>. Собственно в чем я ошибся?) Подскажите

Спустя 1 минута, 52 секунды (22.06.2012 - 14:15) Игорь_Vasinsky написал(а):
preg_match("#<div class=\"title\"><a href=\".*\">(.*)</a>#iusU", $title, $div);

Спустя 21 минута, 44 секунды (22.06.2012 - 14:37) Godod написал(а):
Цитата (Игорь_Vasinsky @ 22.06.2012 - 11:15)
preg_match("#<div class=\"title\"><a href=\".*\">(.*)</a>#iusU", $title, $div);

Не работает sad.gif Сейчас еще буду пробовать. Спасибо за подсказки

Спустя 1 минута, 27 секунд (22.06.2012 - 14:39) Игорь_Vasinsky написал(а):
сайт с которого парсишь в юникоде? дай URL этой страницы

Спустя 6 минут, 38 секунд (22.06.2012 - 14:45) Godod написал(а):
Цитата (Игорь_Vasinsky @ 22.06.2012 - 11:39)
сайт с которого парсишь в юникоде? дай URL этой страницы

Спустя 1 час, 58 минут, 25 секунд (22.06.2012 - 16:44) Godod написал(а):
Все. Решил проблему. Сейчас буду в таблицу заносить.

$preg = $title->find('div.title',0);
if(!$preg) echo "NULL"; else echo "YES";
echo '<pre>'.$preg->plaintext.'</pre>';
preg_match('#<p>(.*)</p>#iusU', $title, $p);
echo '<pre>'.$p[0].'</pre>';

Всем спасибо за помощь.

З.Ы. Правда первую регулярку пришлось убирать...

Спустя 43 минуты, 12 секунд (22.06.2012 - 17:27) Godod написал(а):
Разобрался
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.