- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Зачем быть уникальным в мире, где все можно скопировать
Почему так важна уникальность текста и как она влияет на SEO
Ingate Organic
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Привет коллеги. Изучаю парсинг, никак не могу понять алгоритм записи информации в базу.
Пример.
Есть сайт, там товары. Которые имеют цену, артикул, название.
Так вот я получаю данные (все цены) и записываю их в переменную $cena.
В итоге в этой переменной содержатся все цены с товаров с сайта.
Как их мне записать в базу по отдельности, чтобы каждому товару соответствовала своя цена?
Я что должен, каждой цене присвоить свою переменную и отдельно записывать ее в базу?
Потом, остаются артикулы и названия. Их тоже отдельно нужно записывать?
ORIGAMMI,
Ну вот например Datacol работает таким образом, что отмечаются все нужные поля/заголовки товара, а потом он парсит сайт и составляет таблицу, т.е. одна строка в таблице - это один товар. Потом эту таблицу можно как угодно отредактировать для импорта в различные движки.
Datacol не подайдет, суть в том чтоб сделать парсер, который по крону будет записывать в базу цены и выводить их на сайте.
Создайте таблицу mysql. Туда и пишите через php по крону. Делов то...
Делов для профи нет, а для меня еще все сложно.
Вот есть такой код, не совсем понимаю что он делает. Хочу переработать его.
require ('simple_html_dom.php');
$dbn = mysql_connect('localhost', 'user', 'password');
mysql_select_db('parser', $dbn);
mysql_query('SET NAMES utf8');
$brands = array();
$html = str_get_html(file_get_contents('http://url.kz'));
$insert = 'INSERT INTO kolesa_brands (id, name) VALUES ';
$select = $html->find('select[id=auto.car.mm_0]', 0);
foreach($select->find('option') as $opt)
{
if($opt->value == '') continue;
$insert .= '('.$opt->value.', \''.$opt->plaintext.'\'),';
$brands[$opt->value] = $opt->plaintext;
}
mysql_query(rtrim($insert, ','));
т.е я так понимаю что я ищу место 'option' и присваиваю переменной $opt,,
далее если $opt имеет значение, то продолжаю. А вот это место не понимаю.
$insert .= '('.$opt->value.', \''.$opt->plaintext.'\'),';
$brands[$opt->value] = $opt->plaintext;
}
В вашем примере парсится из выпадающего списка (тэг SELECT) список брэндов автомобилей и непустые значения записываются в базу. Это брэнды, не товары.
Создайте таблицу mysql. Туда и пишите через php по крону. Делов то...
пздц! мы в 2005 вернулись?
далее если $opt имеет значение, то продолжаю. А вот это место не понимаю.
$insert .= '('.$opt->value.', \''.$opt->plaintext.'\'),';
$brands[$opt->value] = $opt->plaintext;
}
Это не самый лучший приме. В данном месте к SQL-запросу добавляются значения для вставки в базу. И заполняется массив $brands, который в данном примере (или в приведённой чего части) не используется.
пздц! мы в 2005 вернулись?
В 2017 в базу пишут как то особенно? :)
В 2017 в базу пишут как то особенно? :)
Не то, чтобы особенно, но так советовать не стоит ;)
Давайте разберем на конкретном примере.
На странице есть таблица там стоят цены.
<td class="cost ttip">
6,89
</td>
Мне их нужно все спарсить и аккуранто записать в базу.
<?php
//подгружаем библиотеку
require 'simple_html_dom.php';
//подключаем базу
$dbn = mysql_connect('localhost', 'user', 'password');
mysql_select_db('parser', $dbn);
mysql_query('SET NAMES utf8');
//создаём новый объект
$html = new simple_html_dom();
//загружаем в него данные
$html = file_get_html('http://site.ru');
//Ищем все <td> в <table> где class = cost ttip
$es = $html->find('table.cost ttip td');
{
if($es->value == '') continue;
$insert .= '('.$es->value.', \''.$es->plaintext.'\'),';
}
//записываем в базу
$query = $db->prepare('INSERT INTO tovar SET price=$es');
//освобождаем ресурсы
$html->clear();
unset($html);
?>
---------- Добавлено 30.04.2017 в 23:17 ----------
Почему не работает ?
http://redbeanphp.com/index.php- для парсеров самое то, гнать в базу в любой модели.