Някой от екипа ви вече е написал скрейпър за един сайт за търгове. Отне уикенд, проработи и даде CSV, който за кратко направи всички оптимисти. Този прототип е причината разговорът да е труден: той е реално доказателство, че проблемът е лесен, и измерва грешното нещо.
Прототипът от уикенда решава събирането за един източник, едно оформление на страницата, един момент във времето, без изискване за наличност. Продукцията решава събирането за дванадесет източника, непрекъснато, докато източниците активно се променят, при обем, при който съхранението и трафикът престават да са грешки от закръгляне. Тази статия остойностява второто.
Моделът на разходите, ред по ред
Стойностите по-долу са порядъчни за екип, който събира около милион активни обяви от няколко европейски и задокеански източника със снимки. Вашите числа ще са различни; структурата на модела — не. Третирайте диапазоните като рамка, която да попълните със собствените си оферти, а не като еталон.
| Разход | Типичен месечен диапазон | Защо е там, където е |
|---|---|---|
| Резидентни / мобилни проксита | €800 – €4000 | IP адресите от центрове за данни бързо се блокират при тези сайтове. Резидентният трафик се таксува на GB, а изтеглянето на снимки доминира сметката. |
| Защита от ботове / решаване на CAPTCHA | €150 – €900 | Нужно е само за някои източници, но на тях им трябва постоянно. |
| Изчислителни ресурси (обхождане, браузъри, опашки) | €300 – €1500 | Безглавите браузъри струват ~10× повече от обикновени HTTP заявки. Кои източници ги изискват определя цялата сума. |
| Обектно хранилище за снимки | €100 – €600 | Няколко терабайта, щом пазите галериите на затворените лотове. Евтино на TB, лесно се забравя напълно. |
| CDN / изходящ трафик за снимки | €200 – €1200 | Расте с трафика ви, не с обхождането. Често това е редът, който изненадва хората при старта. |
| База данни и търсене | €200 – €800 | Търсене с фасети върху милион реда с ценови диапазони не е малка инстанция. |
| Инженерна поддръжка | 0,5 – 1,5 щатни бройки | Доминиращият разход с голяма разлика и този, който никога не се появява в първоначалната оценка. |
Защо поддръжката никога не стихва
Интуицията, че скрейпърите се стабилизират с времето, е грешна, и то по конкретна причина: не поддържате код спрямо фиксирана спецификация. Поддържате го спрямо дванадесет независими екипа, които пускат промени когато пожелаят и не ви дължат нищо.
Промени в маркъпа
Редизайн на фронтенда, A/B тест или обновяване на библиотека с компоненти чупи селекторите. Случаят с A/B теста е най-лошият: извличането успява за 70% от заявките и тихо връща празни стойности за останалите 30%, което изглежда като оскъдни данни, а не като бъг, и може да продължи седмици, преди някой да забележи.
Ескалация на защитата от ботове
Защитата от ботове се подобрява непрекъснато и асиметрично. Всяко обновяване при доставчика е скок за вас, идва без предупреждение и е последвано от спешна, непланирана седмица. Не можете да планирате около него и не можете да го предвидите.
Семантично отклонение
Най-финият провал. Източник преименува категория горива, сменя валута, започва да включва ДДС там, където преди не го е включвал, или добавя такса към показаната цена. Нищо не дава грешка. Системата ви поглъща новото значение под старото име на полето и всяко число надолу по веригата е тихо грешно. Това е класът бъгове, които стигат до клиентите.
Счупените скрейпъри се обявяват сами. Семантично отклонилите се — не, и именно те рушат доверието в продукта ви.
Ерозия на покритието
Лимитите на заявките ви принуждават да приоритизирате. Започвате да обхождате само първите N страници на всеки източник или да обновявате цените само за лотове под определена възраст. Покритието пада от 99% на 85% за година без нито един инцидент и никой не забелязва, докато клиент не попита защо кола, която вижда в Auto1, я няма във вашия продукт.
Правното и договорното измерение
Това наистина зависи от юрисдикцията и тази статия не е правен съвет — но то принадлежи на решението, защото е реален риск, който рядко влиза в таблицата.
- Общите условия на повечето платформи за търгове ограничават автоматизирания достъп. Дали тези условия ви обвързват и с какви последствия, варира по държави и според начина, по който достъпвате сайта.
- Директивата на ЕС за базите данни създава право sui generis върху съществена инвестиция в съставянето на база данни, отделно от авторското право върху отделните записи.
- Снимките са обекти на авторско право. Повторното хостване на снимките на източника е различен въпрос от извличането на фактически характеристики и отговорът не е същият.
- Понякога в текста на обявите има лични данни — имена на продавачи, телефони, местоположения — и GDPR се прилага за тях, независимо как сте ги получили.
Практическият извод не е, че събирането е забранено. А че рискът е реален, неизмерен и стои при вас. Купуването от доставчик не кара основните въпроси да изчезнат, но премества оперативните отношения с източниците при някого, чийто бизнес зависи от поддържането им, и ви дава договор, на който да се позовете.
Време до първия полезен продукт
Цената е едната ос. Календарното време обикновено е това, което решава.
| Етап | Собствено решение | С API |
|---|---|---|
| Първата обява в базата ви | Дни | Под час |
| Един източник, надеждно, със снимки | 3 – 6 седмици | Същия час |
| Няколко източника, нормализирани в една схема | 4 – 8 месеца | Същия час |
| Исторически архив, годен за моделиране | Над 12 месеца събиране | Наличен веднага |
| Стабилно състояние | Никога — вижте поддръжката | Проблем на доставчика |
Последният ред заслужава акцент. Ако продуктът ви се нуждае от история на цените — сравнения, оценка на пазарната стойност, всичко, обучено на минали продажби — то започването на събирането днес означава, че първият ви достоверен модел е след година. Няма как да се ускори, защото данните се създават от изминаването на времето.
Кога собственото решение е правилният отговор
Не реторичен раздел. Има случаи, в които собственото събиране е явно правилно, и да твърдим друго би било нечестно.
- Един източник, един тесен сегмент. Трябва ви Copart Germany, само повредени, една марка. Това е поддържаем скрипт, а не платформа.
- Събирането на данни е вашият продукт. Ако продавате потока, системата е вашето предимство и възлагането ѝ навън няма смисъл.
- Трябва ви поле, което никой не предоставя. Конкретна бележка от протокол за оглед, сигнал на ниво продавач — ако го няма в нито един търговски поток, нямате алтернатива.
- Източник, който никой доставчик не покрива. Регионалните платформи извън поддържаните групи източници често са достъпни само ако ги изградите сами.
- Договорни изисквания за местоположение на данните, които външен API не може да изпълни.
Как да направите сравнението честно
Ако вземате това решение вътрешно, правете сравнението за 36 месеца, а не за 12, и включете тези четири неща, които стандартните оценки пропускат:
- 1Пълната цена на инженерната поддръжка, а не само на първоначалното изграждане. Използвайте реална пълна стойност, не заплата.
- 2Пропуснатите ползи от това инженерно време — какво не се изгражда.
- 3Ефектът върху приходите от пропуските в покритието и остарелите цени през месеците, когато системата ви работи влошено.
- 4Стойността на архива, който няма да имате през първата година.
Изпълнете този модел и отговорът обикновено е ясен в едната или другата посока — което е и целта. За конкретно сравнение на двата подхода спрямо нашата услуга вижте сравнението едно до друго; за това как изглеждат данните, щом пристигнат, започнете с ръководството за данни от търгове.
Често задавани въпроси
Колко струва скрейпването на сайтове за автомобилни търгове в голям мащаб?
Инфраструктурата за около милион активни обяви от няколко европейски и задокеански източника със снимки обикновено струва €2000–9000 на месец — проксита и изходящ трафик за снимки доминират. По-големият разход е инженерният: постоянната поддръжка обикновено е 0,5–1,5 инженера на пълен работен ден, което при европейска пълна цена надвишава цялата сметка за инфраструктура.
Законно ли е скрейпването на сайтове за автомобилни търгове?
Зависи от юрисдикцията, от общите условия на платформата и от това какво извличате и публикувате. В ЕС правото sui generis по Директивата за базите данни, авторското право върху снимките в обявите и GDPR, когато обявите съдържат лични данни, са отделни съображения от общите условия. Това е въпрос за юрист, познаващ вашата юрисдикция и бизнес модел, а не нещо, което да се реши от статия в блог.
Защо скрейпърите за търгове се чупят толкова често?
Четири независими причини: промени в маркъпа от редизайни и A/B тестове, ескалация на защитата от ботове без предупреждение, семантично отклонение, при което полето запазва името си, но сменя значението, и постепенна ерозия на покритието заради лимитите. Само първата се обявява с грешка; другите три влошават качеството на данните тихо.
Мога ли да започна със скрейпване и после да мина към API?
Да, и това е разумен път за проверка на пазар. Единственото, което не се пренася, са историческите данни — ако плановете ви включват ценови модели или сравнения, архивът, който не сте събирали, не може да се купи обратно след това, така че вземете това предвид при избора на момент за смяната.
Кой е най-големият скрит разход, който хората пропускат?
Трафикът за снимки. Екипите бюджетират събирането на данни и забравят, че всяка обява има 20–60 снимки, че изтеглянето им през резидентни проксита се таксува на гигабайт и че сервирането им на потребителите е втора, отделна сметка за изходящ трафик, която расте с трафика, а не с обема на обхождането.
- уеб скрейпване
- изгради или купи
- проксита
- инженерство на данни
Един API, много източници на инвентар
Нормализирано търсене, детайли според източника, галерии в CDN, история на цените и достъп до архива — включени във всеки план.