Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Здравствуйте!
Так как у многих сайтов нет своего апи (может есть но не палят), можно ли как нибудь написать своего поискового бота на базе ларавел?
Допустим занесли в бд боту сайты которые он должен сканировать, дали ему название что искать, и что бы бот занес в базу, если это обьявление о продаже, то там тайтл боди, ссылку на обьявление,если карточка товара, то цену описание и тд. Вообще это возможно реализовать? В каком направлении копать?
Не в сети
Попробую пока парсинг + крон, а там посмотрим
Не в сети
Написать конечно можно. Вопрос в архитектуре базы данных сколько у тебя будет типов информации, нужно ли будет добавлять новые.
Если сайтов, которые ты парсишь, немного, то крон пойдет, но лучше конечно демон и очереди.
Не в сети
Написать конечно можно. Вопрос в архитектуре базы данных сколько у тебя будет типов информации, нужно ли будет добавлять новые.
Если сайтов, которые ты парсишь, немного, то крон пойдет, но лучше конечно демон и очереди.
А что за демон? Просветите)
Не в сети
https://laravel.ru/docs/v5/queues#демон-обработчик
Для общего понимания: https://habrahabr.ru/post/134620/ и другие статьи по запросу в Яндексе "php daemon"
Не в сети
https://laravel.ru/docs/v5/queues#демон-обработчик
Для общего понимания: https://habrahabr.ru/post/134620/ и другие статьи по запросу в Яндексе "php daemon"
благодарю
Не в сети
И лучше разделить схему на двух демонов - один проверяет есть ли обновления на сайтаъ/страницах и скачивает их при необходимости, а второй уже парсит.
Не в сети
Скаченные страницы можно хранить в виде файлов или в noSQL базе
Не в сети
И лучше разделить схему на двух демонов - один проверяет есть ли обновления на сайтаъ/страницах и скачивает их при необходимости, а второй уже парсит.
Спасибо. Все так и сделал.
Есть еще один вопрос.
Сейчас этот парсер работает прекрасно с помощъю рекурсии. Что б не спарсить весь интернет, сделал регулярку для ссылок по которым он должен ходить. Спарсенные данные (предварительно очищенные от мусора) он загоняет в таблицу offers. Но есть еще таблица product. Это так сказать шаблон с характеристиками,картинками, описанием для offers. И offers могут относиться к product, а могут и не относиться (null). Сам вопрос в то, можно ли как то грамотно в одну, по одинаковым полям (name, description, image, price) что б вывести как один ресурс и пустить его по циклу?
Не в сети
Не понял вопрос
Не в сети
Не понял вопрос
две таблици
offers products
product_id category_id
id id
name name
description description
price price
old_price etc...
is_active
is_new
делаем запрос
$products = Product::with('offers')->where('category_id, $id)->active()-get();
Получили коллекцию products вместе с offers.
И теперь выводим их во вьюхе.
@foreach($products as $product)
<!-- Here Template -->
@endforeach
Ну и если мы хотим вывести еще и offers которые относятся к товару, то придется сделать так:
@foreach($products as $product)
<!-- Here Product Template -->
@foreach($product->offers as $offer)
<!-- Here Offer Template -->
@endforeach
@endforeach
И выглядеть все это будит примерно так:
Ультрабук Lenovo ThinkPad 13 Ultrabook
- Ультрабук Lenovo ThinkPad Edge 13 13.3" 1366x768 Intel Core i5-6200U SSD 256 4Gb Intel HD Graphics 520 серебристый DOS 20GJ004CRT
- Ноутбук Ультрабук Lenovo ThinkPad Edge 13 13.3" 1366x768 Intel Core i5-6200U 20GJ004CRT
...
Это уже product и его offers.
А мне надо что объединить 2 таблицы и сгруппировать их по одинаковым полям, что бы вывести в одном цикле.
Не в сети
Стало немного понятнее.
Теперь два вопроса
- По каким полям должна быть группировка?
- Необходимость вывести в одном цикле это бизнес требование или техническое требование? Чем оно обусловлено? Чем не устраивает вариант с двумя циклами?
Не в сети
- По каким полям должна быть группировка?
По трем - name, description, price.
- Необходимость вывести в одном цикле это бизнес требование или техническое требование? Чем оно обусловлено? Чем не устраивает вариант с двумя циклами?
Скорее техническое. Так как offers очень много.
Я думаю вот http://price.ru/model/234554/offers/?attr-2315=3203 эта ссылка полностью покажет пример того чего я хочу добиться. Тут есть единый ресурс со всей инфой, к которому относятся все offers, но у меня немного по другому. Надо что б каждый offer выглядел как product. Это нужно только в категориях. Это временная мера, пока база с products еще мала.
Не в сети
Так и оставь два цикла. Внутри второго группируй оферы по своим полям и выводи их.
Зачем усложнять код и пытаться объединить две разные сущности.
Не в сети
Страницы 1