Size: a a a

2020 November 12

OS

Oleg Shleiko in Scrapy
Михаил Синегубов
всем доброго, пните, плз, в верном направлении.
Паук собираем данные в базу (MySQL), должен быть контроль уникальности (товар несколько раз присутствует в каталоге)
В холостую (без записи в базу) - ~4000 страниц в минуту
в боевом режиме - ~3000 страниц в минуту
так то 25% падение производительности....
что подскажите насчет ускорения? есть пара мыслей:
1. писать "сырые" данные в ту же монгу, потом преносить уже в базу с контролем уникальности
2. бросать данные на "прокладку", что то вроде Redis. т.е с одной сторны паук бросает данные и не ждет как они обработаются, а с другой стороны они потихоньку обрабатываются... Но тут я нубятина, почти полная. Не знаю, правильно я мыслю или полная ерись.

Так что, накидайте идеек :)
основа основ это индексное ли поле в БД по которому ты ищешь существующий товар?
источник

МС

Михаил Синегубов... in Scrapy
Oleg Shleiko
основа основ это индексное ли поле в БД по которому ты ищешь существующий товар?
ага, естественно из за вставок/контроля уникальности - тормоза.
источник

OS

Oleg Shleiko in Scrapy
скорее всего, переписывать индексы дело конечно дорогое
источник

МС

Михаил Синегубов... in Scrapy
точнее, там два поля, ski+time. отключать индексы нельзя :)
источник

OS

Oleg Shleiko in Scrapy
не, не, всё норм, тогда делай прослойку через тот же рэдис или рэббит (лично я использую рэббит т.к. потеря сообщения на проекте очень критична)
источник

МС

Михаил Синегубов... in Scrapy
кролика надо глянуть, селери я даже не знаю как по английски пишется 😆
источник

OS

Oleg Shleiko in Scrapy
celery)
источник

МС

Михаил Синегубов... in Scrapy
один фиг, надо за один браться, а то за все хвататься....
источник

OS

Oleg Shleiko in Scrapy
я чёт призадумался выйграешь ли ты по скорости писав в рэббит...
источник

МС

Михаил Синегубов... in Scrapy
Oleg Shleiko
я чёт призадумался выйграешь ли ты по скорости писав в рэббит...
ну все познается на тестах и в сравнении...
источник

К

Кирилл in Scrapy
Михаил Синегубов
кролика надо глянуть, селери я даже не знаю как по английски пишется 😆
Cелери тоже может кролика использовать внутри в качестве брокера. Самый популярный выбор в селери, это или кролик, или рэдис
источник

К

Кирилл in Scrapy
Прирост в скорости точно будет
источник

V

Vitaly in Scrapy
подскажите новичку пож-та: есть блок из 5 div на одном уровне, у всех дивов одиноковые имена,  нужно доступиться к 1, 3, 4, 5.  к первому доступаюсь по имени через  CSS: div1=response.css('name::text').extract() вопрос как доступиться к 3, 4, 5? пробовал  так  div3= response.xpath("//div[@class=name'][3]/text()").extract() не получается...
источник

AR

Andrey Rahmatullin in Scrapy
показывай хтмл
источник

V

Vitaly in Scrapy
там битриковский шаблон вот ссылка на карточку товара - https://hollyshop.ru/catalog/product/organicheskaya_krem_penka_na_osnove_tsvetochnykh_fermentov_whamisa_organic_flowers_foam_cleansing_cr/
источник

V

Vitaly in Scrapy
нужys div с именами  - div.card__props-item__value
источник

AR

Andrey Rahmatullin in Scrapy
(//div[@class="card__props-item__value"])[3]/text()
источник

AR

Andrey Rahmatullin in Scrapy
но по номеру конечно селектить почти всегда неправильно, например в данном случае надо селектить по названию поля
источник

V

Vitaly in Scrapy
но ведь в том и дело, что название поля у всех пяти дивов одиноковые
источник

AR

Andrey Rahmatullin in Scrapy
не знаю что ты имеешь в виду под "названием поля дива", я про заголовки полей на странице
источник