← Всички публикации

Изграждане на B2B пайплайн за обогатяване на данни за компании

Трябва да обогатявате хиляди компании ежедневно от директории, уебсайтове и преса? Ето как да изградите B2B пайплайн за обогатяване на данни, който не се чупи всяка седмица.

Предизвикателството

Изграждате B2B SaaS продукт. Клиентите ви качват списък с имена на компании. Те очакват обратно чист запис: диапазон на приходите, брой служители, технологичен стек, рунд на финансиране, ключови контакти, последни новини. Очакват го в рамките на минути, а не дни. И очакват да бъде точен.

Данните съществуват. Те се намират в Crunchbase, в страниците "За нас" на компаниите, в LinkedIn профилите на фирмите, в Google Maps, в Glassdoor, в регионалните търговски регистри, в архивите на TechCrunch. Проблемът е надеждният достъп до тях.

Всеки източник се чупи по различен начин. Crunchbase зарежда тежко клиентско приложение, което се пререндерира при съмнение за бот. LinkedIn налага агресивен rate limit и променя своя DOM по-бързо, отколкото можете да коригирате селекторите (популярна публикация в общността отчита, че стандартен Python scraper издържа около 50 профила, преди сайтът да започне да го отхвърля). Фирмените уебсайтове варират от статичен HTML до single-page приложения, които изискват пълен браузър, за да покажат изобщо съдържанието си. Регионалните директории сменят оформленията на всяко тримесечие и блокират достъпа по държава. Според браншови доклад от 2026 г. на GroupBWT, между 10 и 15% от crawler програмите в някои вертикали изискват седмични корекции само за да се справят с промените в bot-detection защитите и промените в DOM структурата.

Така вашият enrichment пайплайн започва като чиста архитектура с пет източника. Шест месеца по-късно той е плетеница от полусчупени scrapers, опашки за повторни опити и Slack канал на име #scraper-alerts, който никой вече не отваря (писали сме за скритата цена на поддръжката на собствени scrapers и преди). Оплакванията за качеството на данните се трупат в съпорта. Екипът ви започва да се шегува, че името на компанията е трябвало да бъде "Пет скрапера и една молитва".

Подходът

Забравете за scrapers за момент. Трудната част при enrichment не е самото извличане. Това е маршрутизирането: да решите кой източник от какъв инструмент се нуждае, кое proxy, каква retry политика и какво се счита за "добър" response.

Платформа като FourA ви предоставя три продукта, които съответстват директно на трите класа източници, с които ще се сблъскате.

Статични HTML директории и регистри. Повечето регионални търговски регистри и редица по-стари B2B директории са server-rendered. Те изискват бърза HTTP заявка с нисък разход на ресурси от чист IP. Това е Single: подавате един URL, получавате един response. Добавете unblocker: true и заявката преодолява блокирания на ниво handshake, които спират напълно стандартен HTTP клиент. Single маршрутизира автоматично през Proxy Finder и връща идентификатора на proxy на най-високо ниво в отговора (r.proxy), така че следващите ви извиквания да могат да го подадат обратно като proxy:"<id>", за да се запази същият изходен адрес при нужда от сесийна непрекъснатост.

SPAs с интензивен JavaScript. Crunchbase, сайтове като LinkedIn и дори платформи на средни компании няма да върнат желаните данни от обикновен HTTP response. Те се рендират на клиента. Тук идва Browser: пълнофункционален браузър изпълнява страницата, пуска JS и ви връща рендирания HTML, cookies и скрийншоти. Подобно на Single, той рутира през Proxy Finder под капака, без отделна стъпка за избор от ваша страна.

Смесени източници с валидация. Всеки request към FourA API приема validate блок. Можете да изисквате конкретни статус кодове, съвпадения на header или търсене на подниз в тялото. Ако полученият response е скрит провал (страница с код 200, изискваща верификация, празна структура на данни или съобщение за грешка), валидаторът го отхвърля. След това вашият pipeline може да пренасочи същия URL през Browser. Тази функционалност елиминира най-скъпия тип грешка при обогатяване на данни: тихият срив, който записва некоректни стойности във вашата база данни.

Ето как изглежда заявка към единичен източник:

curl -X POST https://api.foura.ai/api/single \
  -H "X-API-Key: pk_live_..." \
  -d '{
    "url": "https://registry.example.com/company/123",
    "unblocker": true,
    "followRedirects": 5,
    "validate": {
      "status": { "accept": [200] },
      "data":   { "fail":   ["captcha", "blocked", "access denied"] }
    }
  }'

И еквивалентът с Browser за фирмен сайт с интензивно използване на JavaScript:

curl -X POST https://api.foura.ai/api/browser \
  -H "X-API-Key: pk_live_..." \
  -d '{
    "url": "https://www.example-saas.com/about",
    "unblocker": true
  }'

Логиката на маршрутизиране се намира във вашия собствен pipeline. Надеждността се намира в нашия. Вие решавате кой от вашите източници кой инструмент получава. Ние се уверяваме, че инструментът действително минава успешно.

Резултати

Наблюдавахме как няколко екипа преминаха от вътрешни скрапери към pipeline с маршрутизиране през FourA по време на публичната бета версия. Моделът е последователен (илюстративни данни, базирани на това, което видяхме в бета кохортата):

  • Латентността на обогатяване спада от 3-6 секунди на компания до под 1.5 секунди медиана при маршрути с кеширани жилищни проксита
  • Процентът на тихи грешки (200-with-empty-data отговори) спада от около 8% до под 1%, след като блокът validate улови меките грешки, преди да достигнат базата данни
  • Инженерното време за поддръжка на скрапери спада от 1-2 инженери на пълен работен ден до Slack канал, който през повечето време остава тих
  • Успеваемостта от първи опит за защитени директории се покачва до над 95%, когато unblocker: true е комбиниран с чист proxy id

Още едно число, което си струва да се отбележи: видяхме, че коректността от първи опит (правилни данни, правилна компания) изостава от успеваемостта от първи опит с около четири пункта. Урокът не е, че скрапването е трудно. Урокът е, че все още трябва да валидирате записа спрямо компанията, която действително сте поискали (писахме за този шаблон в защо вашият уеб скрапер продължава да се чупи).

Числата, които имат значение, не са размерът на proxy пула или броят на заявките. Те са процентът, с който вашият enrichment endpoint връща правилните данни от първия опит, и наклонът на графиката за поддръжка на скраперите ви през следващите шест месеца.

Основен извод

Pipelines за обогатяване на данни се провалят на забавен каданс. Първият скрапер, който пишете, изглежда добре във вторник. При третия източник вече поправяте селектори в 23:00 часа. При десетия вече носите дълг за поддръжка, който расте заедно с клиентската ви база. При двадесетия тихо сте спрели да добавяте нови източници, защото никой в екипа не иска да поеме следващия.

Тесното място никога не е било в източника. Беше в маршрутизирането: изборът на правилния инструмент, правилното proxy, правилното правило за валидиране за всеки URL, всеки път. Изградете този слой веднъж или го прехвърлете на нещо, което вече го прави, и екипът ви ще може да прекара вторника в работа по продукта, вместо да анализира счупени селектори.