ЁЯОп рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдпреЛрдЧреНрдп, рдбрд┐рдЯреЗрдХреНрд╢рди-рдкреНрд░рддрд┐рд░реЛрдзреА рдХреНрд▓рд╛рдЙрдб рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬреЛ рд╕реНрд╡-рд╡рд┐рдХрд╕рд┐рдд Chromium рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реИ, рд╡реЗрдм рдХреНрд░реЙрд▓рд░ рдФрд░ рдПрдЖрдИ рдПрдЬреЗрдВрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ред ЁЯСЙрдЕрднреА рдЖрдЬрд╝рдорд╛рдПрдВ
рд╡рд╛рдкрд╕ рдмреНрд▓реЙрдЧ рдкрд░

рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛рддреНрдордХ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреИрд╕реЗ рдмрдирд╛рдПрдВ: рджреИрдирд┐рдХ 8 рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ 5,000 рдПрд╕рдХреЗрдпреВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░реЗрдВ

Ethan Brown
Ethan Brown

Advanced Bot Mitigation Engineer

28-May-2026

рдореБрдЦреНрдп рдмрд┐рдВрджреБ:

  • рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛рддреНрдордХ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдПрдХ рдмрд╛рд╕реНрдХреЗрдЯ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЙрддреНрдкрд╛рдж рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВред рдПрдХ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдЯреАрдо 4 рдмрд╛рдЬрд╛рд░реЛрдВ рдореЗрдВ 8 рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ 5,000 SKUs рдХрд╛ рдЯреНрд░реИрдХ рд░рдЦ рд░рд╣реА рд╣реИ, рдЬреЛ рдкреНрд░рддрд┐рджрд┐рди 160,000 рд░реАрдбреНрд╕ рдХрд░ рд░рд╣реА рд╣реИред рдЬреЛ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╕реНрдХреЗрд▓ рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рдкреНрд░рддрд┐ URL рдПрдХ рд░реЗрдВрдбрд░ рдХреЙрд▓ рд╣реИ, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдЬрд╛рд░ рдХреЗ рд▓рд┐рдП рдИрдЧреНрд░реЗрд╕ рдХреЛ рдкрд┐рди рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдПрдХ рдПрдХрд▓ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдХреАрдорд╛ тАФ 160,000 рдЖрдХрд╕реНрдорд┐рдХ.fetches рдирд╣реАрдВред
  • рдмрд╛рдЬрд╛рд░ рдИрдЧреНрд░реЗрд╕ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдХреАрдорддреЗрдВ, рдореБрджреНрд░рд╛ рдФрд░ рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреНрд╖реЗрддреНрд░ рдФрд░ IP рдкреНрд░рддрд┐рд╖реНрдард╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрджрд▓рддреА рд╣реИрдВред рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рддрд╣рдд рдмрд╛рдЬрд╛рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА рджреЗрд╢ рдХреЛ рдкрд┐рди рдХрд░рдирд╛, рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рдХреЙрд░реНрдб рдХреА рдЧрдИ рдХреАрдордд рдХреЛ рддреБрд▓рдиреАрдп рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИ; рдПрдХ рд╣реА SKU рдкрд░ рдЕрдореЗрд░рд┐рдХреА рдФрд░ рдпреВрд░реЛрдкреАрдп рдИрдЧреНрд░реЗрд╕ рдХреЛ рдорд┐рд▓рд╛рдиреЗ рд╕реЗ рдПрдХ рдореВрд▓реНрдп рдЗрддрд┐рд╣рд╛рд╕ рдкреИрджрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред
  • рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдорд╛рдирдХ рд╕реНрдХреАрдорд╛ред рдкреНрд░рддреНрдпреЗрдХ рдЦреБрджрд░рд╛ рд╡рд┐рдХреНрд░реЗрддрд╛ рдХрд╛ DOM рдЕрд▓рдЧ рд╣реИ; рдЧ┘И╪прд╛рдо рдХреА рддрд╛рд▓рд┐рдХрд╛ рдирд╣реАрдВ рд╣реИред рдирд┐рд╖реНрдХрд░реНрд╖рдг рдкрд░ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд░реЗрдВ: {your_sku, competitor, market, price_value, price_currency, availability, promo_state, captured_at}ред рдирд┐рд░реНрдгрдп рдЧреЛрдбрд╛рдо рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ, рдХрдЪреНрдЪреЗ HTML рдХреЛ рдирд╣реАрдВред
  • рдПрдВрдЯреА-рдбрд┐рдЯреЗрдХреНрд╢рди рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдкрд░ рд╕рдВрднрд╛рд▓реА рдЬрд╛рддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз Scrapeless рдХреНрд▓рд╛рдЙрдб рдХреЗ рднреАрддрд░ рд░реЗрдВрдбрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЖрд╡рд╛рд╕реАрдп рдИрдЧреНрд░реЗрд╕, JavaScript рдирд┐рд╖реНрдкрд╛рджрди, рдФрд░ рдлрд╝рд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рд░реИрдВрдбрдорд╛рдЗрдЬреЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдПрдХ URL рдФрд░ рдПрдХ рджреЗрд╢ рднреЗрдЬрддреА рд╣реИ; рдЗрд╕реЗ рд░реЗрдВрдбрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ HTML рд╡рд╛рдкрд╕ рдорд┐рд▓рддрд╛ рд╣реИред рдХреЛрдИ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрд╛рдЗрдирд░реА, рдХреЛрдИ рдкреНрд░реЙрдХреНрд╕реА рд░реЛрдЯреЗрд╢рди рд▓реЙрдЬрд┐рдХ, рдФрд░ рдЖрдкрдХреЗ рдорд╢реАрди рдкрд░ рдХреЛрдИ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХрд╛ CDP рдХреНрд▓рд╛рдЗрдиреНрдЯ рдирд╣реАрдВред
  • рдкрд╛рдЗрдкрд▓рд╛рдЗрди HTML рдкрд░ рдирд╣реАрдВ, рдбрд┐рдлрд╝ рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИред рдХрдЪреНрдЪреЗ рд░реЗрдВрдбрд░ рдХрд┐рдП рдЧрдП рдкреГрд╖реНрда рд╕реНрдХреНрд░реИрдЪ рд╕рдВрдЧреНрд░рд╣рдг рд╣реИрдВред рдЬреЛ рд╕рдВрдХреЗрдд рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдЯреАрдореЛрдВ рдкрд░ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рдЖрдкрдХреЗ рдореВрд▓реНрдп рдФрд░ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдХреЗ рдореВрд▓реНрдп рдХреЗ рдмреАрдЪ рдХрд╛ рдбрд┐рдл рд╣реЛрддрд╛ рд╣реИ, рдкреНрд░рддрд┐ рдмрд╛рдЬрд╛рд░, рдкреНрд░рддрд┐ SKU тАФ рдПрдХ рдкреБрдирдГ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдирд┐рдпрдо, рдПрдХ рд╕реНрд▓реИрдХ рдЕрд▓рд░реНрдЯ, рдпрд╛ рдПрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдбреИрд╢рдмреЛрд░реНрдб рдХреЛ рд╕рддрд╣ рджреЗрддрд╛ рд╣реИред
  • рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ред рдирдП Scrapeless рдЦрд╛рддреЗ рдореЗрдВ рдореБрдлреНрдд рд░рдирдЯрд╛рдЗрдо рд╢рд╛рдорд┐рд▓ рд╣реИ тАФ app.scrapeless.com рдкрд░ рд╕рд╛рдЗрди рдЕрдк рдХрд░реЗрдВред

рдкрд░рд┐рдЪрдп: рд╡реЗрдм рдбреЗрдЯрд╛ рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛рддреНрдордХ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдирд┐рд░реНрдгрдп

рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛рддреНрдордХ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдЯреАрдореЗрдВ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдПрдХ рд╣реА рдмрд╛рдзрд╛ рдХреЗ рд╕рд╛рде рдЬреА рд░рд╣реА рд╣реИрдВ: рдХреАрдорддреЗрдВ рдЙрди рдбреЗрдЯрд╛ рдлрд╝реАрдбреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдмрджрд▓рддреА рд╣реИрдВ рдЬреЛ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдирд┐рд░реНрдгрдпреЛрдВ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддреА рд╣реИрдВред рдПрдХ рдЦреБрджрд░рд╛ рд╡рд┐рдХреНрд░реЗрддрд╛ рд░рд╛рддреЛрдВрд░рд╛рдд рдПрдХ рдореВрд▓реНрдп рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ; BI рдЯрд╛рдЗрд▓ 48 рдШрдВрдЯреЗ рдмрд╛рдж рдЕрдкрдбреЗрдЯ рд╣реЛрддреА рд╣реИ; рдЬрдм рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЕрдВрддрд░ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ, рддрдм рддрдХ рдкреНрд░реЛрдореЛрд╢рдирд▓ рд╡рд┐рдВрдбреЛ рдмрдВрдж рд╣реЛ рдЪреБрдХреА рд╣реЛрддреА рд╣реИред рд╡реЗрдм рдбреЗрдЯрд╛ рдЙрд╕ рд▓реВрдк рдХреЛ рдмрдВрдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрднреА рдЬрдм рд╕рдВрдЧреНрд░рд╣рдг рдкрд░рдд рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЧрддрд┐ рдХреЗ рд╕рд╛рде рддрд╛рд▓рдореЗрд▓ рдмрд┐рдард╛ рд╕рдХреЗ рдФрд░ рдЧреЛрдбрд╛рдо рдореЗрдВ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреАрдорд╛ рдЦрд┐рд▓рд╛рдПред

рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдЪреБрдиреМрддреА "рдПрдХ рдЙрддреНрдкрд╛рдж рдкреГрд╖реНрда рдХреЛ рд╕реНрдХреНрд░реИрдк рдХрд░рдирд╛" рдирд╣реАрдВ рд╣реИред рдпрд╣ SKUs рдХреЗ рдмрд╛рд╕реНрдХреЗрдЯ, рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд╕реНрдХреЗрдЯ, рдФрд░ рдмрд╛рдЬрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд╕реНрдХреЗрдЯ рдХреЗ рдкрд╛рд░ рд╕реНрдХреНрд░реИрдк рдХреЗ рдПрдХ рдмреЗрдбрд╝реЗ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдирд╛ рд╣реИ тАФ рд╣рд░ рджрд┐рди, рд╣рд░ рдмрд╛рдЬрд╛рд░, рд╣рд░ рдЦреБрджрд░рд╛ рд╡рд┐рдХреНрд░реЗрддрд╛, рд╕рдорд╛рди рд╕рдЯреАрдХрддрд╛ рдХреА рдЧрд╛рд░рдВрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдеред рдкреНрд░рддреНрдпреЗрдХ рдЦреБрджрд░рд╛ рд╡рд┐рдХреНрд░реЗрддрд╛ рдХрд╛ DOM рдШреВрдорддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдЬрд╛рд░ рдХреА рдХреАрдорддреЗрдВ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХрд░рддреА рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рдЦреБрджрд░рд╛ рд╡рд┐рдХреНрд░реЗрддрд╛ рдХреА рдПрдВрдЯреА-рдмреЙрдЯ рдкрд░рдд рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рд╕рд╛рдлрд╝, рд░реЗрдВрдбрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ HTML рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛ рд╣реЛрддрд╛ рд╣реИред Octoparse OptiGroup рдХреЗрд╕ рдЕрдзреНрдпрдпрди рдиреЗ рдкреИрдЯрд░реНрди рдХреЛ рдкреИрдорд╛рдиреЗ рдкрд░ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛: 50 рд╕рд╣рд╛рдпрдХ рдХрдВрдкрдирд┐рдпрд╛рдБ, рджрд░реНрдЬрдиреЛрдВ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рд╕рд╛рдЗрдЯреЗрдВ, рдХреНрд╖реЗрддреНрд░реАрдп рдореВрд▓реНрдп, рдПрдХ рдХреЗрдВрджреНрд░реАрдХреГрдд рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдирд┐рд░реНрдгрдп рдкрд░рддред

рдпрд╣ рдЧрд╛рдЗрдб Scrapeless рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдмреБрджреНрдзрд┐рдорддрд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рд╕рдВрдЧреНрд░рд╣рдг рдкрд░рдд рдХреЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдФрд░ Python рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддрд╛ рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд NDJSON рд╕реНрдЯреНрд░реАрдо рд╣реИ рдЬреЛ рдЧреЛрдбрд╛рдо рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдЦрд┐рд▓рд╛рддрд╛ рд╣реИ; рдЗрдирдкреБрдЯ рд╡рд╣ рдмрд╛рд╕реНрдХреЗрдЯ рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдкрдврд╝реЗрдВ; рдкреНрд░рддрд┐ рдЦреБрджрд░рд╛ рд╡рд┐рдХреНрд░реЗрддрд╛ рдПрдХреНрд╕рдЯреНрд░реИрдХреНрдЯрд░ рдХреЛ рдмрджрд▓рдХрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдХреЗ рд▓рд┐рдП рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред


рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

  • рджреИрдирд┐рдХ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛рддреНрдордХ рдмрд╛рд╕реНрдХреЗрдЯ рд░реАрдбред 4 рдмрд╛рдЬрд╛рд░реЛрдВ рдореЗрдВ 8 рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ 5,000 SKUs рдХреЛ рджреИрдирд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкрд░ рдПрдХ рд╕реАрдорд┐рдд рд░рдирдЯрд╛рдЗрдо рдФрд░ рдПрдХ рдорд╛рдирдХ рд╕реНрдХреАрдорд╛ рдХреЗ рд╕рд╛рде рдЯреНрд░реИрдХ рдХрд░реЗрдВред
  • рдмрд╛рдЬрд╛рд░-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреБрдирд░реНрдореВрд▓реНрдпрд╛рдВрдХрдиред рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдЬрд╛рд░ рдХреЗ рд▓рд┐рдП рдИрдЧреНрд░реЗрд╕ рджреЗрд╢ рдХреЛ рдкрд┐рди рдХрд░реЗрдВ; рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдХреАрдорддреЗрдВ рдЦреАрдВрдЪреЗрдВ рдЬреЛ рджрд░реНрд╢рд╛рддреА рд╣реИрдВ рдХрд┐ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЦрд░реАрджрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рджреЗрдЦрддрд╛ рд╣реИ, рди рдХрд┐ рдХреЛрдИ рднреВ-рдлреЛрд▓реНрдб рдХреАрдорддред
  • рдкреНрд░реЛрдореЛ-рд╕реНрдЯреЗрдЯ рдирд┐рдЧрд░рд╛рдиреАред рд╕реВрдЪреАрдмрджреНрдз рдореВрд▓реНрдп рдФрд░ рдкреНрд░реЛрдореЛрд╢рдирд▓ рд╕реНрдерд┐рддрд┐ (рдмрд┐рдХреНрд░реА рдкрд░, рдкреНрд░рддрд┐рд╢рдд рдмрдВрдж, рд╕рдордп-рд╕реАрдорд┐рдд рдмреИрдЬ) рджреЛрдиреЛрдВ рдХреЛ рдкрдХрдбрд╝реЗрдВ рддрд╛рдХрд┐ рдЧреЛрдбрд╛рдо рдпрд╣ рдЬрд╛рди рд╕рдХреЗ рдХрд┐ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдореВрд▓реНрдп рдФрд░ рдПрдХ рдХреНрд▓рд┐рдпрд░реЗрдВрд╕ рдкреБрд╢ рдХреЗ рдмреАрдЪ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИред
  • MAP рдЕрдиреБрдкрд╛рд▓рди рдСрдбрд┐рдЯред рдЦреБрджрд░рд╛ рд╡рд┐рдХреНрд░реЗрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪреАрдмрджреНрдз рдХреАрдорддреЛрдВ рдХреА рддреБрд▓рдирд╛ рдЖрдкрдХреЗ MAP (рдиреНрдпреВрдирддрдо рд╡рд┐рдЬреНрдЮрд╛рдкрд┐рдд рдореВрд▓реНрдп) рдиреАрддрд┐ рд╕реЗ рдХрд░реЗрдВ рдФрд░ рдЪреИрдирд▓-рдкреНрд░рдмрдВрдзрди рдЯреАрдо рдХреЛ рдЙрд▓реНрд▓рдВрдШрдиреЛрдВ рдХреЛ рд╕рддрд╣ рджреЗрдВред
  • рдирдП рдЙрддреНрдкрд╛рдж рд▓реЙрдиреНрдЪ рдЯреНрд░реИрдХрд┐рдВрдЧред рдХрд┐рд╕реА рд╢реНрд░реЗрдгреА рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА SKUs рдХреЗ рдкрд╣рд▓реЗ-рджреГрд╢реНрдпрдорд╛рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ; рдкрд╛рдЗрдкрд▓рд╛рдЗрди "рдХреНрдпрд╛ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА X рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ?" рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддреА рд╣реИред
  • рдореВрд▓реНрдп рд▓рдЪреАрд▓рд╛рдкрди рдбреЗрдЯрд╛рд╕реЗрдЯред 90 рджрд┐рдиреЛрдВ рдореЗрдВ рджреИрдирд┐рдХ рд╕реНрдиреИрдкрд╢реЙрдЯ рдРрд╕реА рд╕рдордп рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рд╛рдЬрд╕реНрд╡ рдкреНрд░рдмрдВрдзрди SKU рд╕реНрддрд░ рдкрд░ рд▓рдЪреАрд▓рд╛рдкрди рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИред

Scrapeless рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ рдЬрдмрдХрд┐ рд▓рд╛рдЧреВ рдХрд╛рдиреВрдиреЛрдВ, рдирд┐рдпрдореЛрдВ, рдФрд░ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреА рдЧреЛрдкрдиреАрдпрддрд╛ рдиреАрддрд┐рдпреЛрдВ рдХрд╛ рд╕рдЦреНрддреА рд╕реЗ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рдХреЗрд╡рд▓ рдкреНрд░рджрд░реНрд╢рди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИред


рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛рддреНрдордХ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдХреЗ рд▓рд┐рдП Scrapeless рдХреНрдпреЛрдВ

Scrapeless рдкреНрд░рддреНрдпреЗрдХ рд▓рдХреНрд╖рд┐рдд URL рдХреЛ рдПрдВрдЯреА-рдбрд┐рдЯреЗрдХреНрд╢рди рдХреНрд▓рд╛рдЙрдб рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд░реЗрдВрдбрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрддреНрдо-рд╡рд┐рдХрд╕рд┐рдд Chromium рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдПрдХрд▓ API рдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреИрдпрд╛рд░ HTML рд▓реМрдЯрд╛ рджреЗрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдмреБрджреНрдзрд┐рдорддрд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП, рдпрд╣ рд▓рд╛рддрд╛ рд╣реИ:

  • 195+ рджреЗрд╢реЛрдВ рдореЗрдВ рдЖрд╡рд╛рд╕реАрдп рдкреНрд░реЙрдХреНрд╕реА, рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдПрдХ рджреЗрд╢ рдХреЛрдб рдХреЗ рд╕рд╛рде рдкрд┐рди рдХрд┐рдпрд╛ рдЧрдпрд╛ тАФ рдИрдЧреНрд░реЗрд╕ рднреВрдЧреЛрд▓ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдЬрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝реАрд▓реНрдб рд╣реИред
  • рдХреНрд▓рд╛рдЙрдб-рд╕рд╛рдЗрдб JavaScript рд░реЗрдВрдбрд░рд┐рдВрдЧред рдЦреБрджрд░рд╛ рд╡рд┐рдХреНрд░реЗрддрд╛ рдХреЗ рдЙрддреНрдкрд╛рдж рдкреГрд╖реНрда React рдпрд╛ Next.js рдРрдк рд╣реИрдВ; рдореВрд▓реНрдп рддрддреНрд╡ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдХреЗ рдмрд╛рдж рдЙрддрд░рддрд╛ рд╣реИред js_render=True рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдкрдХреА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдкреЛрд╕реНрдЯ-рдкреЗрдВрдЯ DOM рдХреЛ рдкрдврд╝рддреА рд╣реИ, рди рдХрд┐ SSR рд╢реЗрд▓ред
  • рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдПрдВрдЯреА-рдбрд┐рдЯреЗрдХреНрд╢рдиред рдпреВрдП, рд╕рдордпрдХреНрд╖реЗрддреНрд░, рд╡реЗрдмрдЬреАрдПрд▓, рдХреИрдирд╡рд╛рд╕, рдФрд░ рд╣реЗрдбрд▓реЗрд╕ рдлрд╝реНрд▓реИрдЧреНрд╕ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдкреНрд░рддрд┐ рдЕрдиреБрд░реЛрдз рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╣реЛрддреЗ рд╣реИрдВред рдХреЛрдИ рд╕реНрдерд╛рдиреАрдп рд╕реНрдЯреАрд▓реНрде-рдкреНрд▓рдЧрдЗрди рд░рдЦрд░рдЦрд╛рд╡ рдирд╣реАрдВ, рдХреЛрдИ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрд╛рдЗрдирд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВред
  • рдПрдХ рдмрд┐рдирд╛ рд╕реНрдерд┐рддрд┐ рд╡рд╛рд▓рд╛ рдЕрдиреБрд░реЛрдз рдЖрдХрд╛рд░ред рдкреНрд░рддреНрдпреЗрдХ рдЙрддреНрдкрд╛рдж рдкреГрд╖реНрда рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдкрдврд╝рд╛рдИ рд╣реИ: рдПрдХ рдпреВрдЖрд░рдПрд▓ рдФрд░ рдПрдХ рджреЗрд╢ рднреЗрдЬреЗрдВ, рд╡рд╛рдкрд╕ рд░реЗрдВрдбрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдЪрдЯреАрдПрдордПрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдпрд╣ рд╣рдЬрд╛рд░реЛрдВ рд╕реНрд╡рддрдВрддреНрд░ рдПрд╕рдХреЗрдпреВ рдкрдврд╝рдиреЗ рдХреЗ рд╕рд╛рдореВрд╣рд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдореИрдк рдХрд░рддрд╛ рд╣реИред
  • рд╕рдВрдкреВрд░реНрдг рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдЖрдИ рдХреБрдВрдЬреАред рд░реЗрдВрдбрд░рд┐рдВрдЧ, рдЖрд╡рд╛рд╕реАрдп рдкреНрд░реЙрдХреНрд╕реА, рдФрд░ рдПрд╕рдбреАрдХреЗ рд╕рднреА рдПрдХ рд╣реА рд╕реНрдХреНрд░реЗрдкрд▓реЗрд╕ рдЦрд╛рддреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рдмрд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ; рдХреЛрдИ рдкреНрд░рддрд┐-рд╕реНрддрд░ рдПрдХреАрдХрд░рдг рдирд╣реАрдВред

рдЕрдкрдиреА рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдореБрдлреНрдд рдпреЛрдЬрдирд╛ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ app.scrapeless.com рдкрд░ред


рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛рдПрдБ

  • рдкрд╛рдпрдерди 3.10 рдпрд╛ рдирдпрд╛
  • рдПрдХ рд╕реНрдХреНрд░реЗрдкрд▓реЗрд╕ рдЦрд╛рддрд╛ рдФрд░ рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА - рд╕рд╛рдЗрди рдЕрдк рдХрд░реЗрдВ app.scrapeless.com рдкрд░
  • requests-рд╢реИрд▓реА HTTP рдФрд░ рдПрдХ CSS-рдЪрдпрдирдХрд░реНрддрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЬреНрдЮрд╛рди
  • рдПрдХ рд▓рдХреНрд╖рд┐рдд рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рд╕реВрдЪреА рдФрд░ рдПрдХ рдПрд╕рдХреЗрдпреВ рдмрд╛рд╕реНрдХреЗрдЯ рдлрд╝рд╛рдЗрд▓

рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдПрдХ рдирдЬрд╝рд░ рдореЗрдВ

Copy
basket.yaml                      (рд╡рд┐рд╢реНрд▓реЗрд╖рдХ-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЗрдирдкреБрдЯ)
       тФВ
       тЦ╝
тФМтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФР
тФВ   рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯрд░   тФВ  (рдмрд╛рдЬрд╛рд░, рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА, рдПрд╕рдХреЗрдпреВ) рдкреНрд░рддрд┐ рдХрд╛рд░реНрдп; рд╕реАрдорд┐рдд рд╕рдорд╡рд░реНрддреАрддрд╛
тФФтФАтФАтФАтФАтФАтФАтФмтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФШ
       тФВ
       тЦ╝
тФМтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФР
тФВ   рд╕реНрдХреНрд░реЗрдкрд▓реЗрд╕     тФВ  client.universal.scrape(url, country) тАФ рдЖрд╡рд╛рд╕реАрдп рдирд┐рдХрд╛рд╕реА,
тФВ  (рдХреНрд▓рд╛рдЙрдб рд░реЗрдВрдбрд░)  тФВ  JS рд░реЗрдВрдбрд░рд┐рдВрдЧ, рдПрдВрдЯреА-рдбрд┐рдЯреЗрдХреНрд╢рди, рд╕рднреА рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб
тФФтФАтФАтФАтФАтФАтФАтФмтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФШ
       тФВ  рд░реЗрдВрдбрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдЪрдЯреАрдПрдордПрд▓
       тЦ╝
тФМтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФР
тФВ   рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг    тФВ  рдкреНрд░рддрд┐-рдЦреБрджрд░рд╛ extractor тЖТ рдХреИрди╨╛╨╜рд┐рдХрд▓ рд╕реНрдХреАрдорд╛
тФФтФАтФАтФАтФАтФАтФАтФмтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФШ
       тФВ
       тЦ╝
prices.ndjson          (рдПрдХ рдкрдВрдХреНрддрд┐ рдкреНрд░рддрд┐ (рдЙрддреНрдкрд╛рдж, рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА, рдмрд╛рдЬрд╛рд░, рджрд┐рди))
       тФВ
       тЦ╝
рдЧреЛрдбрд╛рдо рд▓реЛрдб + рдЖрдкрдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЕрдВрддрд░ + рдЕрд▓рд╛рд░реНрдо

рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдПрдХ рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓ рд╣реИ; рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╕рд╛рдд рдЪрд░рдг рдЗрд╕реЗ рдиреАрдЪреЗ рд╕реЗ рдКрдкрд░ рдмрдирд╛рддреЗ рд╣реИрдВред


рдЪрд░рдг 1 тАФ рд╕реНрдХреНрд░реЗрдкрд▓реЗрд╕ рдПрд╕рдбреАрдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ

bash Copy
pip install scrapeless lxml pyyaml

scrapeless рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкрд╛рдпрдерди рдПрд╕рдбреАрдХреЗ рд╣реИ; рдпрд╣ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдХреНрд▓рд╛рдЙрдб-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдЪрдЯреАрдПрдордПрд▓ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрд╛рдЗрдирд░реА рдФрд░ рдХреЛрдИ рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реНрд╡рдЪрд╛рд▓рди рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред lxml рдкрд╛рд░реНрд╕рд░ рд╣реИ; pyyaml рдмрд╛рд╕реНрдХреЗрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд╝рд░реЗрд╢рди рдкрдврд╝рддрд╛ рд╣реИред


рдЪрд░рдг 2 тАФ рдмрд╛рд╕реНрдХреЗрдЯ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ

рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдЯреАрдо рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд▓реЗрддреА рд╣реИред рдЗрд╕реЗ рдиреАрд░рд╕ рд░рдЦреЗрдВ - рдмрд╛рдЬрд╛рд░, рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА, рдПрд╕рдХреЗрдпреВ рдореИрдкрд┐рдВрдЧред рдкреНрд░рддрд┐ (рдЖрдкрдХрд╛_sku, рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА, рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА_url, рдмрд╛рдЬрд╛рд░) рдПрдХ рдкрдВрдХреНрддрд┐:

yaml Copy
# basket.yaml
markets:
  - рдпреВрдПрд╕
  - рдЬреАрдмреА
  - рдбреАрдпреВ
  - рдЬреЗрдкреА

basket:
  - your_sku: SKU-1001
    name: "Acme Widget Pro"
    competitors:
      - retailer: target_competitor_a
        url:
          US: "https://competitor-a.com/p/widget-pro"
          GB: "https://competitor-a.co.uk/p/widget-pro"
          DE: "https://competitor-a.de/p/widget-pro"
          JP: "https://competitor-a.co.jp/p/widget-pro"
      - retailer: target_competitor_b
        url:
          US: "https://competitor-b.com/products/widget-pro"
          GB: "https://competitor-b.co.uk/products/widget-pro"

5,000-рдПрд╕рдХреЗрдпреВ рдмрд╛рд╕реНрдХреЗрдЯ рдЙрд╕реА рдЖрдХрд╛рд░ рдореЗрдВ рд░рд╣рддреА рд╣реИ; рдЧреЛрджрд╛рдо your_sku рдкрд░ рдЬреБрдбрд╝рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдкрдХреЗ рдЕрдкрдиреЗ рдореВрд▓реНрдп рдлреАрдб рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рдордиреНрд╡рдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред


рдЪрд░рдг 3 тАФ рд╕реНрдХреНрд░реЗрдкрд▓реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрддреНрдкрд╛рдж рдкреГрд╖реНрда рд░реЗрдВрдбрд░ рдХрд░реЗрдВ

(рдмрд╛рдЬрд╛рд░, рдПрд╕рдХреЗрдпреВ) рдкреНрд░рддрд┐ рдПрдХ рд░реЗрдВрдбрд░ рдХреЙрд▓ред рджреЗрд╢ рдкрд┐рди рдЖрд╡рд╛рд╕реАрдп рдирд┐рдХрд╛рд╕реА рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ; js_render=True рдкреЛрд╕реНрдЯ-рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдбреЙрдо рд▓реМрдЯрд╛рддрд╛ рд╣реИ:

python Copy
import os
from scrapeless import Scrapeless
from scrapeless.types.universal import (
    UniversalScrapingRequest, UniversalJsRenderInput, UniversalProxy,
)

client = Scrapeless()  # SCRAPELESS_API_KEY рдХреЛ env рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ

def scrape_rendered(url: str, market: str) -> str:
    """рд╕реНрдХреНрд░реЗрдкрд▓реЗрд╕ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдПрдХ рдЙрддреНрдкрд╛рдж рдкреГрд╖реНрда рд░реЗрдВрдбрд░ рдХрд░реЗрдВ рдФрд░ рдПрдЪрдЯреАрдПрдордПрд▓ рд▓реМрдЯрд╛рдПрдБред"""
    request = UniversalScrapingRequest(
        actor="unlocker.webunlocker",
        input=UniversalJsRenderInput(url=url, js_render=True, headless=True),
        proxy=UniversalProxy(country=market),
    )
    return client.universal.scrape(request)  # рд░реЗрдВрдбрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдЪрдЯреАрдПрдордПрд▓ (str) рд▓реМрдЯрд╛рддрд╛ рд╣реИ

рджреЗрд╢ рдкрд┐рди рд╡рд╣ рд▓реЛрдб-рдмреЗрдпрд░рд┐рдВрдЧ рдлреАрд▓реНрдб рд╣реИред рдПрдХ рд╣реА рдЙрддреНрдкрд╛рдж рдпреВрдЖрд░рдПрд▓ рдкреНрд░рддрд┐ рдХреНрд╖реЗрддреНрд░ рдПрдХ рдЕрд▓рдЧ рдореВрд▓реНрдп, рдореБрджреНрд░рд╛, рдФрд░ рдЙрдкрд▓рдмреНрдзрддрд╛ рд░рд╛рдЬреНрдп рд░реЗрдВрдбрд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдирд┐рдХрд╛рд╕реА рдХреЛ рдкрд┐рди рдХрд░рдирд╛ рд╣рд░ рджрд░реНрдЬ рдореВрд▓реНрдп рдХреЛ рдПрдХ рд╣реА рдмрд╛рдЬрд╛рд░ рдкрд░ рд░рдЦрддрд╛ рд╣реИред js_render=True рдкреГрд╖реНрда рдХреЗ рдЪрд┐рддреНрд░рдг рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП React/Vue/Next.js рдЦреБрджрд░рд╛ рд╡рд┐рдХреНрд░реЗрддрд╛ рдореВрд▓реНрдп рддрддреНрд╡ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рди рдХрд┐ рдПрдХ рдЦрд╛рд▓реА рдЦреЛрд▓ред


рдЪрд░рдг 4 тАФ рдмрд╛рд╕реНрдХреЗрдЯ рдХреЛ рдЪрд▓рд╛рдПрдВ

рдкреНрд░рддреНрдпреЗрдХ рдПрд╕рдХреЗрдпреВ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рд░реЗрдВрдбрд░ рдХреЙрд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрд╛рд╕реНрдХреЗрдЯ рдЪрд▓рд╛рдирд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд▓реВрдк рд╣реИ (рдпрд╛ рд╕рдорд╛рдВрддрд░рддрд╛ рдХреЗ рд▓рд┐рдП рд╕реАрдорд┐рдд рдереНрд░реЗрдб рдкреВрд▓)ред рдХреЛрдИ рд╕рддреНрд░ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ, рдХреЛрдИ рд╣реЛрдордкреГрд╖реНрда рдЧрд░реНрдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ тАФ рдХреНрд▓рд╛рдЙрдб рд░реЗрдВрдбрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдкрд░ рдЦреБрджрд░рд╛ рд╡рд┐рдХреНрд░реЗрддрд╛ рдХреА рдПрдВрдЯреА-рдмреЙрдЯ рдкрд░рдд рдХреЛ рд╕рд╛рдл рдХрд░ рджреЗрддрд╛ рд╣реИ:

python Copy
import yaml

def load_basket(path: str = "basket.yaml") -> dict:
    with open(path, encoding="utf-8") as f:
        return yaml.safe_load(f)

def walk_basket(basket: dict):
    """рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рд╕реНрдХреЗрдЯ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд▓рд┐рдП (рдЖрдкрдХрд╛_sku, рдЦреБрджрд░рд╛ рд╡рд┐рдХреНрд░реЗрддрд╛, рдмрд╛рдЬрд╛рд░, рдпреВрдЖрд░рдПрд▓, рдПрдЪрдЯреАрдПрдордПрд▓) рдкреНрд░рджрд╛рди рдХрд░реЗрдВред"""
    for item in basket["basket"]:
        for comp in item["competitors"]:
            for market, url in comp["url"].items():
                html = scrape_rendered(url, market)
                yield item["your_sku"], comp["retailer"], market, url, html

5,000-SKU рдмрд╛рд╕реНрдХреЗрдЯ рдХреЗ рд▓рд┐рдП, scrape_rendered рдХреЛ concurrent.futures.ThreadPoolExecutor рдореЗрдВ рд▓рдкреЗрдЯреЗрдВ рдФрд░ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЙрд╕ рд╕реНрддрд░ рдкрд░ рд╕реАрдорд┐рдд рдХрд░реЗрдВ рдЬреЛ рдЦрд╛рддрд╛ рдпреЛрдЬрдирд╛ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдп рдХреЛ рд╢реНрд░рдорд┐рдХ рдЬреЛрдбрд╝рдХрд░ рд╕реНрдХреЗрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЗрд╕рдореЗрдВ рд╕рд╛рдЭрд╛ рд╕рддреНрд░ рдкрд░ рд╡рд┐рд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдЖрдкрдХреА API рдХреБрдВрдЬреА рдореБрдлреНрдд рдпреЛрдЬрдирд╛ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ: app.scrapeless.com


рдХрджрдо 5 тАФ рдХреИрдиреЛрдирд┐рдХрд▓ рд╕реНрдХреАрдорд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓реЗрдВ

рдкреНрд░рддрд┐ рд░рд┐рдЯреЗрд▓рд░ рдХрд╛ DOM рдЕрд▓рдЧ рд╣реЛрддрд╛ рд╣реИ; рдЧреЛрджрд╛рдо рддрд╛рд▓рд┐рдХрд╛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдПрдХреНрд╕рдЯреНрд░реИрдХреНрдЯрд░ рдХрд╛ рдХрд╛рдо рд╣реИ рдХрд┐ рдЬреЛ рдХреБрдЫ рднреА рд░рд┐рдЯреЗрд▓рд░ рдмрдирд╛рддрд╛ рд╣реИ рдЙрд╕реЗ рд╣рд░ рдмрд╛рд░ рдПрдХ рд╣реА рдЖрдХрд╛рд░ рдореЗрдВ рдмрджрд▓ рджреЗрдирд╛ред рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдХреАрдорд╛ (рдкреНрд░рддрд┐ (your_sku, competitor, market, captured_at) рдПрдХ рдкрдВрдХреНрддрд┐):

python Copy
from dataclasses import dataclass, asdict
from datetime import datetime, timezone
from typing import Optional
from lxml import html as lxml_html

@dataclass
class PriceRecord:
    your_sku: str
    competitor: str
    market: str
    url: str
    price_value: Optional[float]
    price_currency: Optional[str]
    availability: Optional[str]       # "in_stock" | "out_of_stock" | "preorder" | None
    promo_state: Optional[str]        # "none" | "on_sale" | "clearance" | None
    promo_discount_pct: Optional[float]
    captured_at: str                  # ISO-8601 UTC

рдкреНрд░рддрд┐ рд░рд┐рдЯреЗрд▓рд░ рдПрдХреНрд╕рдЯреНрд░реИрдХреНрдЯрд░реНрд╕ рдЙрд╕реА рд▓реМрдЯрд╛рдП рдЧрдП рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкреНрд▓рдЧ рдХрд░реЗрдВ:

python Copy
def extract_competitor_a(html: str, your_sku: str, market: str, url: str) -> PriceRecord:
    doc = lxml_html.fromstring(html)

    price_el = doc.cssselect("[data-test='price'] .value")
    currency_el = doc.cssselect("[data-test='price'] .currency")
    availability_el = doc.cssselect("[data-test='availability']")
    promo_el = doc.cssselect("[data-test='promo-badge']")

    availability = (
        "in_stock" if availability_el and "In stock" in availability_el[0].text_content()
        else "out_of_stock" if availability_el
        else None
    )

    return PriceRecord(
        your_sku=your_sku,
        competitor="target_competitor_a",
        market=market,
        url=url,
        price_value=_to_float(price_el[0].text_content()) if price_el else None,
        price_currency=currency_el[0].text_content().strip() if currency_el else None,
        availability=availability,
        promo_state="on_sale" if promo_el else "none",
        promo_discount_pct=_to_float(promo_el[0].get("data-discount-pct")) if promo_el else None,
        captured_at=datetime.now(timezone.utc).isoformat(),
    )

def _to_float(text) -> Optional[float]:
    if not text:
        return None
    cleaned = "".join(c for c in text if c.isdigit() or c == ".")
    try:
        return float(cleaned)
    except (ValueError, TypeError):
        return None

рд╣рд░ рд░рд┐рдЯреЗрд▓рд░ рдХреЛ рдЕрдкрдирд╛ extract_<name> рдлрд╝рдВрдХреНрд╢рди рдорд┐рд▓рддрд╛ рд╣реИ; рд╣рд░ рдлрд╝рдВрдХреНрд╢рди рд╡рд╣реА PriceRecord рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯрд░ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рдЯреЗрд▓рд░ рдХреМрди рд╕рд╛ DOM рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - рдХреЗрд╡рд▓ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдоред

рдЪреБрдирд╛рд╡ рдбрд┐рдЬрд╝рд╛рдЗрди рдиреЛрдЯреНрд╕:

  • рдЬрдм рд░рд┐рдЯреЗрд▓рд░ рдЙрдиреНрд╣реЗрдВ рдЙрдЬрд╛рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ [data-test='...'] рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╡рд░реАрдпрддрд╛ рджреЗрдВред рд╡реЗ рдХреЙрд╕реНрдореЗрдЯрд┐рдХ рдХреНрд▓рд╛рд╕-рдирд╛рдо рд░реЛрдЯреЗрд╢рди рд╕реЗ рдмрдЪ рдЬрд╛рддреЗ рд╣реИрдВ; рдХреНрд▓рд╛рд╕ рдЬреИрд╕реЗ .text-lg.font-semibold рд╣рд░ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдмрджрд▓рддреА рд╣реИрдВред
  • рдЧреИрд░рдореМрдЬреВрдж рдлрд╝реАрд▓реНрдб рдХреЛ рдирд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдиреЗрдВред рдЖрдЙрдЯ-рдСрдл-рд╕реНрдЯреЙрдХ рдЙрддреНрдкрд╛рдж рдХреЗ рд▓рд┐рдП None рдореВрд▓реНрдп рдбреЗрдЯрд╛ рд╣реИ, рд╡рд┐рдлрд▓рддрд╛ рдирд╣реАрдВред
  • рдЙрд╕ рдореБрджреНрд░рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░реЗрдВ рдЬреЛ рд░рд┐рдЯреЗрд▓рд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред рдмрд╛рдЬрд╛рд░ рд╕реЗ рдореБрджреНрд░рд╛ рдХрд╛ рдЕрдиреБрдорд╛рди рдирд╛ рд▓рдЧрд╛рдПрдВ - рдХреБрдЫ рд░рд┐рдЯреЗрд▓рд░реНрд╕ рдЕрдкрдиреЗ .de рдбреЛрдореЗрди рдкрд░ рдХреНрд░реЙрд╕-рдмреЙрд░реНрдбрд░ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП USD рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВред рдЬреЛ рдкреГрд╖реНрда рдХрд╣рддрд╛ рд╣реИ рд╡реЛ рд╣реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВред

рдХрджрдо 6 тАФ рдЧреЛрджрд╛рдо рд▓реЛрдб рдХреЗ рд▓рд┐рдП NDJSON рдореЗрдВ рд╕реНрдЯреНрд░реАрдо рдХрд░реЗрдВ

NDJSON рдореЗрдВ рд╕реНрдЯреНрд░реАрдо-рд▓рд┐рдЦреЗрдВ рддрд╛рдХрд┐ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдордзреНрдп рдореЗрдВ рд░реБрдХрдиреЗ рдкрд░ рд░рд┐рдХреЙрд░реНрдб рдЦреЛрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЬреАрд╡рд┐рдд рд░рд╣реЗред рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдПрдХ рдкреНрд░рджрд░реНрд╢рд┐рдд SKU рд╣реИ; рдлрд╝рд╛рдЗрд▓ рдХреЗрд╡рд▓ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ:

python Copy
import json
from pathlib import Path

def append_records(records: list[PriceRecord], out_path: str = "prices.ndjson"):
    Path(out_path).parent.mkdir(parents=True, exist_ok=True)
    with open(out_path, "a", encoding="utf-8") as f:
        for r in records:
            f.write(json.dumps(asdict(r)) + "\n")

NDJSON рд╕реАрдзреЗ Snowflake (COPY INTO ... FILE_FORMAT = (TYPE = JSON)), BigQuery (bq load --source_format=NEWLINE_DELIMITED_JSON), Redshift, ClickHouse, рдФрд░ DuckDB рдореЗрдВ рд▓реЛрдб рд╣реЛрддреА рд╣реИред рдкрд╣рд▓реЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ BI рд╕реНрдЯреИрдХ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЪреБрдиреЗрдВ; рд╕реНрдХреАрдорд╛ рд╡рд╣реА рд╣реИред


рдХрджрдо 7 тАФ рдбрд┐рдлреНрд╕ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ рдФрд░ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдирд┐рд░реНрдгрдпреЛрдВ рдХреЛ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ

рдкреНрд░рд╛рдЗрд╕рд┐рдВрдЧ рдЯреАрдо рдЬрд┐рд╕ рд╕рдВрдХреЗрдд рдкрд░ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИ рд╡рд╣ рдХрдЪреНрдЪреА рдХреАрдордд рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдкреНрд░рддрд┐ рдмрд╛рдЬрд╛рд░, рдкреНрд░рддрд┐ SKU, рдкреНрд░рддрд┐рдпреЛрдЧреА рдХреА рдХреАрдордд рдФрд░ рдЖрдкрдХреА рдХреАрдордд рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рд╣реИред рдпрд╣ рдЕрдВрддрд░ рдЧреЛрджрд╛рдо рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рд╕реНрдХреНрд░реИрдкрд░ рдореЗрдВ рдирд╣реАрдВ:

sql Copy
-- рджреИрдирд┐рдХ рдореВрд▓реНрдп рдЕрдВрддрд░, рдкреНрд░рддрд┐ SKU рдкреНрд░рддрд┐ рдкреНрд░рддрд┐рдпреЛрдЧреА рдкреНрд░рддрд┐ рдмрд╛рдЬрд╛рд░
WITH yours AS (
  SELECT sku, market, list_price, currency, captured_date
  FROM your_internal_prices
  WHERE captured_date = CURRENT_DATE
),
theirs AS (
  SELECT your_sku, competitor, market, price_value, price_currency,
         availability, promo_state, CAST(captured_at AS DATE) AS captured_date
  FROM competitor_prices
  WHERE CAST(captured_at AS DATE) = CURRENT_DATE
)
SELECT
  t.your_sku,
  t.competitor,
  t.market,
  y.list_price                                  AS our_price,
  t.price_value                                 AS their_price,

ROUND(100.0 * (y.list_price - t.price_value) / NULLIF(t.price_value, 0), 2)
AS price_gap_pct,
t.availability,
t.promo_state
FROM theirs t
LEFT JOIN yours y
ON y.sku = t.your_sku AND y.market = t.market
WHERE y.list_price IS NOT NULL
AND t.price_value IS NOT NULL
ORDER BY price_gap_pct DESC;

price_gap_pct рдХреЗ рд▓рд┐рдП рдЙрд╕ рд╕реАрдорд╛ рд╕реЗ рдкрд░реЗ рдХреЗ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд░реВрдЯ рдХрд░реЗрдВ рдЬреЛ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдирд┐рдпрдо рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ:

  • рдЖрдкрдХреА рдХреАрдордд рдХреА рд╕реАрдорд╛ рд╕реЗ рдКрдкрд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдиреЗрддрд╛ рд╕реЗ 5%+ рдЕрдзрд┐рдХ рдорд╣рдВрдЧреЗ рд╣реИрдВ) тЖТ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рд╕рдореАрдХреНрд╖рд╛ред
  • MAP рд╕реАрдорд╛ рдХреЗ рдиреАрдЪреЗ тЖТ рдЪреИрдирд▓ рдкреНрд░рдмрдВрдзрди рдХреЛ MAP-рдЙрд▓реНрд▓рдВрдШрди рдЕрд▓рд░реНрдЯред
  • рдХрд▓ рд╕реЗ рдкреНрд░реЛрдореЛ-рд░рд╛рдЬреНрдп рдореЗрдВ рдмрджрд▓рд╛рд╡ тЖТ рд╢реНрд░реЗрдгреА рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛рддреНрдордХ-рдкреНрд░реЛрдореЛ рдЕрдзрд┐рд╕реВрдЪрдирд╛ред

рдбрд┐рдл рдХреНрд╡реЗрд░реА рд╕рдВрдЧреНрд░рд╣ рдФрд░ рдирд┐рд░реНрдгрдп рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдиреБрдмрдВрдз рд╣реИред рдЬрдм рддрдХ рдЧреЛрджрд╛рдо рдХреА рд╕реНрдХреАрдорд╛ рд╕реНрдерд┐рд░ рд░рд╣рддреА рд╣реИ, рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдЯреАрдо рдХреЗ рдбрд╛рдЙрдирд╕реНрдЯреНрд░реАрдо BI рдЯрд╛рдЗрд▓, рдЕрд▓рд░реНрдЯ, рдФрд░ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдирд┐рдпрдо рддрдм рднреА рдирд╣реАрдВ рдмрджрд▓рддреЗ рдЬрдм рдХреЛрдИ рд░рд┐рдЯреЗрд▓рд░ рдЕрдкрдирд╛ DOM рдШреБрдорд╛рддрд╛ рд╣реИ - рдХреЗрд╡рд▓ рд╕реНрдЯреЗрдк 5 рдореЗрдВ рдкреНрд░рддрд┐-рд░рд┐рдЯреЗрд▓рд░ рдПрдХреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдмрджрд▓рддрд╛ рд╣реИред


рдЖрдкрдХреЛ рдХреНрдпрд╛ рдорд┐рд▓реЗрдЧрд╛

(рдЖрдкрдХрд╛_sku, рдкреНрд░рддрд┐рдпреЛрдЧреА, рдмрд╛рдЬрд╛рд░, рджрд┐рди) рдкреНрд░рддрд┐ рдПрдХ NDJSON рдкрдВрдХреНрддрд┐, рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдХрд╛рд░рд┐рдд:

json Copy
{
  "your_sku": "SKU-1001",
  "competitor": "target_competitor_a",
  "market": "US",
  "url": "https://competitor-a.com/p/widget-pro",
  "price_value": 79.99,
  "price_currency": "USD",
  "availability": "in_stock",
  "promo_state": "on_sale",
  "promo_discount_pct": 15.0,
  "captured_at": "<ISO-8601 UTC timestamp written at read time>"
}

рдкреИрдЯрд░реНрди рдЪрд▓рд╛рдиреЗ рд╕реЗ рдИрдорд╛рдирджрд╛рд░ рдЕрд╡рд▓реЛрдХрди:

  • рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд╛ рд╕рдордп DOM рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдПрдХ рдЪрдпрдирдХрд░реНрддрд╛ рдЬреЛ SSR рд╢реЗрд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЪрд▓рддрд╛ рд╣реИ, рдХреАрдордд рддрддреНрд╡ рдХреЗ рдЪрд┐рддреНрд░рд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИред js_render=True рдкреЛрд╕реНрдЯ-рд╣рд╛рдЗрдбреНрд░реЗрд╢рди DOM рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХреАрдордд рдЪрдпрдирдХрд░реНрддрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред
  • рдореБрджреНрд░рд╛ рдмрд╛рдЬрд╛рд░ рдХреЗ рд╕рд╛рде рдЕрддрд┐рд░рдВрдЬрд┐рдд рдирд╣реАрдВ рд╣реИред рдХреНрд░реЙрд╕-рдмреЙрд░реНрдбрд░ SKUs рдХрднреА-рдХрднреА рд╕реНрдерд╛рдиреАрдп рдбреЛрдореЗрди рдкрд░ рднреА рдПрдХ рдЧреИрд░-рд╕реНрдерд╛рдиреАрдп рдореБрджреНрд░рд╛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВред рд░реЗрдВрдбрд░ рдХреА рдЧрдИ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ; рдЧреЛрджрд╛рдо рдкрд░рдд рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд╣реЛрдиреЗ рджреЗрдВред
  • рдкреНрд░реЛрдореЛ рд░рд╛рдЬреНрдп рдХреЗ рдкрд╛рд╕ рдХрдо рд╕реЗ рдХрдо рддреАрди рдорд╛рди рд╣реИрдВ, рджреЛ рдирд╣реАрдВред none, on_sale, рдФрд░ clearance рдореВрд▓реНрдп рдкреБрдирд░реНрдореВрд▓реНрдпрд╛рдВрдХрди рдирд┐рдпрдореЛрдВ рдореЗрдВ рднрд┐рдиреНрдирддрд╛ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ - рдПрдХ clearance markdown рдЬреАрд╡рди рд╕рдорд╛рдкреНрддрд┐ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ, рди рдХрд┐ рдПрдХ рдкреНрд░рдЪрд╛рд░ рдзрдХреНрдХрд╛ред
  • рдЙрдкрд▓рдмреНрдзрддрд╛ рджреВрд╕рд░рд╛ рд╕рдмрд╕реЗ рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдХреНрд╖реЗрддреНрд░ рд╣реИред рдПрдХ рдЖрдЙрдЯ-рдСрдл-рд╕реНрдЯреЙрдХ SKU рдкрд░ 20% рдХреАрдордд рдХрд╛ рдЕрдВрддрд░ рдПрдХ рдЗрди-рд╕реНрдЯреЙрдХ SKU рдкрд░ рд╕рдорд╛рди рдЕрдВрддрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛рддреНрдордХ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реИред рджреЛрдиреЛрдВ рдХреЛ рдирд┐рд░реНрдгрдп рдкрд░рдд рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред
  • рдПрдХ рдорд╛рдирдХ рд╕реНрдХреАрдорд╛ рд▓реЛрдб-рдмреЗрдпрд░рд┐рдВрдЧ рдирд┐рд░реНрдгрдп рд╣реИред рдкреНрд░рддрд┐-рд░рд┐рдЯреЗрд▓рд░ рдХреНрд╖реЗрддреНрд░, рдореБрджреНрд░рд╛ рдкрд░рдВрдкрд░рд╛рдПрдВ, рдФрд░ рдкреНрд░рдореЛ рдлреЙрд░реНрдореЗрдЯ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ; рдЧреЛрджрд╛рдо рддрд╛рд▓рд┐рдХрд╛ рдирд╣реАрдВред рднрд┐рдиреНрдирддрд╛ рдХреЛ рдПрдХреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдзрдХреЗрд▓реЗрдВ, рд╕реНрдХреАрдорд╛ рдХреЛ рд╕рдкрд╛рдЯ рд░рдЦреЗрдВред

рдирд┐рд╖реНрдХрд░реНрд╖: рдЕрдкрдиреЗ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЛ рд╕реНрдХреЗрд▓ рдХрд░реЗрдВ

рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЫрдГ рдЪрд░рдгреЛрдВ рдореЗрдВ рдШрдЯрд┐рдд рд╣реЛрддреА рд╣реИ: рдмреИрд╕реНрдХреЗрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ тЖТ Scrapeless рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ SKU рдХреЛ рдмрд╛рдЬрд╛рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд░реЗрдВрдбрд░ рдХрд░реЗрдВ тЖТ рдПрдХ рдорд╛рдирдХ рд╕реНрдХреАрдорд╛ рдореЗрдВ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рдП тЖТ NDJSON рдореЗрдВ рд╕реНрдЯреНрд░реАрдо рдХрд░реЗрдВ тЖТ рдЧреЛрджрд╛рдо рдореЗрдВ рд▓реЛрдб рдХрд░реЗрдВ тЖТ рдЕрдкрдиреА рдЦреБрдж рдХреА рдХреАрдорддреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЕрдВрддрд░ рдирд┐рдХрд╛рд▓реЗрдВред рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдЗрддрдирд╛ рдЫреЛрдЯрд╛ рд╣реИ рдХрд┐ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХреЗ; рдирд┐рд░реНрдорд╛рдг 8 рдкреНрд░рддрд┐рдпреЛрдЧрд┐рдпреЛрдВ рдФрд░ 4 рдмрд╛рдЬрд╛рд░реЛрдВ рдореЗрдВ 5,000 SKUs рдХреЛ рдПрдХрд▓ рджреИрдирд┐рдХ рдХреНрд░реЙрди рдкрд░ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред

рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг-рд▓рд╛рдЧреВ рд╕реНрдХреНрд░реИрдкрд┐рдВрдЧ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд░рд┐рдпрд▓-рдПрд╕реНрдЯреЗрдЯ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг) рдХреЗ рд▓рд┐рдП рд╡рд┐рдХреНрд░реЗрддрд╛-рддреБрд▓рдирд╛ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП, 2026 рдХреЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда Zillow рд╕реНрдХреНрд░реИрдкрд░реНрд╕ рд╕реВрдЪреА рдЖрда рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд╕рдорд╛рди рдкреНрд░рдХрд╛рд░ рдХреА рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдореВрд▓реНрдп рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЪреБрдиреМрддреА рдХреЗ рдЦрд┐рд▓рд╛рдл рд░реИрдВрдХ рдХрд░рддреА рд╣реИред NDJSON рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдХреНрд▓рд╛рдЙрдб рдЧреЛрджрд╛рдо рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Scrapeless + Snowflake рдбреЗрдЯрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рддрддрд╛ рдЧрд╛рдЗрдб COPY INTO рдФрд░ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдкрде рдХреЛ рд╕рдВрднрд╛рд▓рддреА рд╣реИред

рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдЬрд╛рд░ рдХреЗ рд▓рд┐рдП рдИрдЧреНрд░реЗрд╕ рджреЗрд╢ рдХреЛ рдкрд┐рди рдХрд░реЗрдВ, рдкреНрд░рддреНрдпреЗрдХ SKU рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд░реЗрдВрдбрд░ рдХрд░реЗрдВ, рдирд┐рд╖реНрдХрд░реНрд╖рдг рдкрд░ рд╕рд╛рдорд╛рдиреНрдп рдХрд░реЗрдВ, SKU/рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡реА/рдмрд╛рдЬрд╛рд░/рджрд┐рди рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рдкрдВрдХреНрддрд┐ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ, рдФрд░ рдЧреЛрджрд╛рдо рдореЗрдВ рддреБрд▓рдирд╛ рдХрд░реЗрдВ тАФ рд╕реНрдХреНрд░реИрдкрд░ рдореЗрдВ рдирд╣реАрдВред


рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреА AI-рд╕рдВрдЪрд╛рд▓рд┐рдд рдбреЗрдЯрд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ?

рд╣рдорд╛рд░реЗ рд╕рдореБрджрд╛рдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ рддрд╛рдХрд┐ рдореБрдлреНрдд рдпреЛрдЬрдирд╛ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░реЗрдВ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдЬреЛ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛рддреНрдордХ-рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдкрд╛рдЗрдкрд▓рд╛рдЗрдВрд╕ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ: рдбрд┐рд╕реНрдХреЛрд░реНрдб ┬╖ рдЯреЗрд▓реАрдЧреНрд░рд╛рдоред

app.scrapeless.com рдкрд░ рд╕рд╛рдЗрди рдЕрдк рдХрд░реЗрдВ рдореБрдлреНрдд рд░рдирдЯрд╛рдЗрдо рдХреЗ рд▓рд┐рдП рдФрд░ рдКрдкрд░ рджрд┐рдП рдЧрдП рдкреИрдЯрд░реНрди рдХреЛ рдмрд╛рдЬрд╛рд░реЛрдВ, рдкреНрд░рддрд┐рдпреЛрдЧрд┐рдпреЛрдВ, рдФрд░ SKU рдмреИрд╕реНрдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ рдЬрд┐рд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рд╡рд┐рд╡рд░рдг scrapeless.com/en/pricing рдкрд░; рдкреНрд░реЙрдХреНрд╕реА рд╕рдорд╛рдзрд╛рди рдЙрддреНрдкрд╛рдж рдкреГрд╖реНрда scrapeless.com/en/product/proxy-solutions рдкрд░ рд╣реИ; рдкреВрд░реНрдг SDK рд╕рдВрджрд░реНрдн docs.scrapeless.com рдкрд░ рд╣реИред


рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди

рдкреНрд░рд╢реНрди 1: рдХреНрдпрд╛ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдХреАрдорддреЛрдВ рдХреЛ рд╕реНрдХреНрд░реИрдк рдХрд░рдирд╛ рдХрд╛рдиреВрдиреА рд╣реИ?

рдХреАрдорддреЗрдВ рд░рд┐рдЯреЗрд▓рд░ рдЙрддреНрдкрд╛рдж рдкреГрд╖реНрдареЛрдВ рдкрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рд╣реИрдВ, рдФрд░ рдореВрд▓реНрдп рддреБрд▓рдирд╛ рдПрдХ рд╕реНрдерд╛рдкрд┐рдд рд╡реНрдпрд╛рдкрд╛рд░ рдкреНрд░рдерд╛ рд╣реИред рд╡реИрдзрддрд╛ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рд╕реНрдХреНрд░реИрдк рдХрд░рддреЗ рд╣реИрдВ, рдХрд╣рд╛рдВ рд╕реЗ, рдФрд░ рдХрд┐рди рд╢рд░реНрддреЛрдВ рдХреЗ рдЕрдзреАрдиред рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рдбреЗрдЯрд╛ рд╕рд╛рдорд╛рдиреНрдпрддрдГ рд╕реБрд▓рдн рд╣реИ; рд╕рд╛рдЗрдЯ рдХреЗ рд╕реЗрд╡рд╛ рдХреА рд╢рд░реНрддреЗрдВ, рдХреНрд╖реЗрддреНрд░реАрдп рдЧреЛрдкрдиреАрдпрддрд╛ рдХрд╛рдиреВрди (GDPR, CCPA), рдФрд░ рдХреЙрдкреАрд░рд╛рдЗрдЯ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред рдЙрдЪреНрдЪ-рд╕реНрдЯреЗрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд▓рд╛рд╣ рд▓реЗрдВред Scrapeless рдХреЗрд╡рд▓ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдбреЗрдЯрд╛ рд╕реЗ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИред

рдкреНрд░рд╢реНрди 2: рдХреНрдпрд╛ рдореБрдЭреЗ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
рд╣рд╛рдБ, рдФрд░ рджреЗрд╢ рдХрд╛ рдкрд┐рди рдЖрдИрдкреА рд░реЛрдЯреЗрд╢рди рд╕реЗ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рд░рд┐рдЯреЗрд▓рд░реНрд╕ рдмрд╛рдЬрд╛рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреАрдорддреЗрдВ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ; рдПрдХ рдЕрдореЗрд░рд┐рдХреА рдирд┐рдХрд╛рд╕реА рдЕрдиреБрд░реЛрдз рдПрдХ .co.uk рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рдмреИрдХрдлреЙрд▓ рдХреАрдордд, рдПрдХ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ, рдпрд╛ рдПрдХ рднреВ-рдирд┐рд╖реЗрдз рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред UniversalProxy(country=...) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рдкреЗ рдЬрд╛ рд░рд╣реЗ рдмрд╛рдЬрд╛рд░ рдХреЗ рд▓рд┐рдП рджреЗрд╢ рдХреЛ рдкрд┐рди рдХрд░реЗрдВред 195+ рджреЗрд╢реЛрдВ рдореЗрдВ рд╕реНрдХреНрд░реЗрдкрд▓реЗрд╕ рдЖрд╡рд╛рд╕реАрдп рдкреНрд░реЙрдХреНрд╕рд┐рдпрд╛рдВ рд╕рд╛рдорд╛рдиреНрдп рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдЯреЛрдХрд░реЗ рдХреЛ рдХрд╡рд░ рдХрд░рддреА рд╣реИрдВ рдмрд┐рдирд╛ рдПрдХ рдЕрд▓рдЧ рдкреНрд░реЙрдХреНрд╕реА рдкреНрд░рджрд╛рддрд╛ рдХреЛ рд╕реНрдЯреИрдХ рдореЗрдВ рд▓рд╛рдПред

рдкреНрд░рд╢реНрди 3: рдореИрдВ рдПрдВрдЯреА-рдмреЙрдЯ рдЪреБрдиреМрддрд┐рдпреЛрдВ рдФрд░ рдмреЙрдЯ рдкрд╣рдЪрд╛рди рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓реВрдВ?

рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕реНрдХреНрд░реЗрдкрд▓реЗрд╕ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдкрд░ рдЖрд╡рд╛рд╕реАрдп рдирд┐рдХрд╛рд╕реА, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди, рдФрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдлрд╝рд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЪрд▓рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдЬреЛ рд░рд┐рдЯреЗрд▓рд░ рддрдХ рдкрд╣реБрдБрдЪрддрд╛ рд╣реИ рдПрдХ рдЖрд╡рд╛рд╕реАрдп рдЖрдИрдкреА рд╕реЗ рд▓рдХреНрд╖реНрдп рдмрд╛рдЬрд╛рд░ рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдмреНрд░рд╛рдЙрдЬрд░ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред js_render=True рд╕реЗрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреВрд░реНрд╡-рд░реЗрдВрдбрд░ рд╢реЗрд▓ рдХреА рдмрдЬрд╛рдп рдкреЛрд╕реНрдЯ-рд╣рд╛рдЗрдбреНрд░реЗрд╢рди DOM рд╣реЛ, рдФрд░ рдЬрд┐рд╕ рдмрд╛рдЬрд╛рд░ рдХреЛ рдЖрдк рдорд╛рдкрддреЗ рд╣реИрдВ рдЙрд╕рдХреЗ рд▓рд┐рдП рджреЗрд╢ рдХреЛ рдкрд┐рди рдХрд░реЗрдВред

рдкреНрд░рд╢реНрди 4: рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд┐рддрдиреА рдмрд╛рд░ рдЪрд▓рд╛рдиреА рдЪрд╛рд╣рд┐рдП?

рджреИрдирд┐рдХ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдирд┐рд░реНрдгрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдореМрд▓рд┐рдХ рддрд╛рд▓ рд╣реИ; рдЬрдм рдкреНрд░реЛрддреНрд╕рд╛рд╣рди рд╡рд┐рдВрдбреЛ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреА рдЬрд╛рддреА рд╣реИ рдЬрд╣рд╛рдБ рджрд┐рди рдХреЗ рднреАрддрд░ рдХреАрдорддреЗрдВ рдмрджрд▓рддреА рд╣реИрдВ, рддреЛ рдкреНрд░рддрд┐ рдШрдВрдЯреЗ рдЪрд▓рд╛рдирд╛ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рд╣реИред рдкреНрд░рддрд┐-SKU рд▓рд╛рдЧрдд рдПрдХрд▓ рд░реЗрдВрдбрд░ рдХреЙрд▓ рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рджреИрдирд┐рдХ рддрд╛рд▓ рдкрд░ 5,000-SKU рдЯреЛрдХрд░реЗ рдПрдХрд▓-рдХреНрд░реЛрди-рд╢реЙрдк рдмрдЬрдЯ рдХреЗ рднреАрддрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╣реИред рдЙрдЪреНрдЪ рдЖрд╡реГрддреНрддрд┐рдпрд╛рдБ рд░реЗрдЦреАрдп рд░реВрдк рд╕реЗ рд▓рд╛рдЧрдд рдЬреЛрдбрд╝рддреА рд╣реИрдВ - рдЙрд╕ рддрд╛рд▓ рдХреЛ рдЪреБрдиреЗрдВ рдЬрд┐рд╕реЗ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдирд┐рд░реНрдгрдп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦрдкрдд рдХрд░рддрд╛ рд╣реИред

рдкреНрд░рд╢реНрди 5: рдЬрдм рдПрдХ рд░рд┐рдЯреЗрд▓рд░ рдЕрдкрдирд╛ DOM рдШреБрдорд╛рддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?

рдЪрд░рдг 5 рдореЗрдВ рдкреНрд░рддрд┐-рд░рд┐рдЯреЗрд▓рд░ рдПрдХреНрд╕реНрдЯреНрд░реИрдХреНрдЯрд░ рдПрдХрдорд╛рддреНрд░ рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬреЛ рдмрджрд▓рддреА рд╣реИред рдореМрд▓рд┐рдХ рд╕реНрдХреАрдорд╛, рдЧреЛрджрд╛рдо рддрд╛рд▓рд┐рдХрд╛, BI рдЯрд╛рдЗрд▓реЗрдВ, рдбрд┐рдл рдХреНрд╡реЗрд░реА, рдФрд░ рдЕрд▓рд░реНрдЯрд┐рдВрдЧ рдирд┐рдпрдо рд╕рднреА рдЕрдкреНрд░рднрд╛рд╡рд┐рдд рд╣реИрдВред рдЬрдм рдПрдХ рд░рд┐рдЯреЗрд▓рд░ рдПрдХ рд░рд┐рд▓реАрдЬрд╝ рднреЗрдЬрддрд╛ рд╣реИ рддреЛ рд╕реЗрд▓реЗрдХреНрдЯрд░реНрд╕ рдХреА рдлрд┐рд░ рд╕реЗ рдЬрд╛рдВрдЪ рдХрд░реЗрдВ; рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдкрд░ [data-test='...'] рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдВ; рдПрдХреНрд╕реНрдЯреНрд░реИрдХреНрдЯрд░ рдХреЛ рдЕрд╕реНрдерд┐рд░ рдкрд░рдд рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рд╕реНрдХреАрдорд╛ рдХреЛ рд╕реНрдерд┐рд░ рдкрд░рдд рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдиреЗрдВред

рдкреНрд░рд╢реНрди 6: рдХреНрдпрд╛ рдореИрдВ рдХрдИ рд░рд┐рдЯреЗрд▓рд░реНрд╕ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реВрдБ?

рд╣рд╛рдБред рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдВрдбрд░ рдХреЙрд▓ Stateless рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдпреЛрдЬрдХ (рдмрд╛рдЬрд╛рд░, рдкреНрд░рддрд┐рдпреЛрдЧреА, SKU) рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдХ рдереНрд░реЗрдб рдкреВрд▓ рдореЗрдВ рдлреИрд▓рд╛рддрд╛ рд╣реИ рдФрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЙрд╕ рд╕реНрддрд░ рддрдХ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЦрд╛рддреЗ рдХреА рдпреЛрдЬрдирд╛ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рд╕рдорд╛рдирд╛рдВрддрд░рддрд╛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рд╕реНрдХреЗрд▓ рд╣реЛрддреА рд╣реИ, рди рдХрд┐ рдПрдХ рд╕рддреНрд░ рд╕рд╛рдЭрд╛ рдХрд░рдХреЗ - рд╡рд╣рд╛рдБ рдХреЛрдИ рд╣реЛрд▓реНрдб рдХрдиреЗрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд▓рдбрд╝рд╛рдИ рдХрд░рдиреА рд╣реЛред

рдкреНрд░рд╢реНрди 7: рдореИрдВ рдкреНрд░рдореЛ рд╕реНрдерд┐рддрд┐ рдФрд░ рдЫреВрдЯ рдкреНрд░рддрд┐рд╢рдд рдХреЛ рдХреИрд╕реЗ рдХреИрдкреНрдЪрд░ рдХрд░реВрдВ?

рдЪрд░рдг 5 рдХрд╛ рдПрдХреНрд╕реНрдЯреНрд░реИрдХреНрдЯрд░ рдкреНрд░рдореЛ рдмреИрдЬ рдХреЛ рд╕реАрдзреЗ рд░реЗрдВрдбрд░ рдХрд┐рдП рдЧрдП DOM рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ promo_state ("on_sale", "clearance", "none") рдФрд░ promo_discount_pct рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝реАрд▓реНрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЧреЛрджрд╛рдо рджреЛрдиреЛрдВ рдХреЛ рдбрд┐рдл рдХреНрд╡реЗрд░реА рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдирд┐рдпрдо "рдХреНрдпрд╛ рдкреНрд░рддрд┐рдпреЛрдЧреА рдЕрднреА рдмрд┐рдХреНрд░реА рдкрд░ рд╣реИ?" рдмрдирд╛рдо "рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдХреА рд╣рд░ рджрд┐рди рдХреА рдХреАрдордд рдХреНрдпрд╛ рд╣реИ?" рдкрд░ рд╢рд╛рдЦрд╛ рдмрдирд╛ рд╕рдХреЗред

рдкреНрд░рд╢реНрди 8: рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдп рдореБрджреНрд░рд╛рдУрдВ рдФрд░ FX рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП рд░реЗрдВрдбрд░ рдХреА рдЧрдИ рдореБрджреНрд░рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░реЗрдВ (USD, EUR, JPY, GBP)ред рдореБрджреНрд░рд╛ рд░реВрдкрд╛рдВрддрд░рдг рдЧреЛрджрд╛рдо рдкрд░рдд рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕реНрдХреНрд░реИрдкрд░ рдореЗрдВ рдирд╣реАрдВ - рдХрдЪреНрдЪреА рдХреАрдордд + рдХрдЪреНрдЪреА рдореБрджреНрд░рд╛ + рдмрд╛рдЬрд╛рд░ рдХреЛ NDJSON рдореЗрдВ рд░рдЦреЗрдВ, рдФрд░ BI рдкрдХреНрд╖ рдкрд░ рджреИрдирд┐рдХ FX рдХреНрд░реЙрд╕-рдЬреЙрдЗрди рдЪрд▓рд╛рдПрдВред рдЗрд╕ рддрд░рд╣ рдПрдХ рдЦрд░рд╛рдм FX рджрд░ рдкреВрд░реА рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдЦрд░рд╛рдм рдирд╣реАрдВ рдХрд░рддреАред

рд╕реНрдХреНрд░реИрдкрд▓реЗрд╕ рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рд▓рд╛рдЧреВ рдХрд╛рдиреВрдиреЛрдВ, рд╡рд┐рдирд┐рдпрдореЛрдВ рдФрд░ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдЧреЛрдкрдиреАрдпрддрд╛ рдиреАрддрд┐рдпреЛрдВ рдХрд╛ рд╕рдЦреНрддреА рд╕реЗ рдЕрдиреБрдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдмреНрд▓реЙрдЧ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рдХреЗрд╡рд▓ рдкреНрд░рджрд░реНрд╢рди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдЕрд╡реИрдз рдпрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдо рдЗрд╕ рдмреНрд▓реЙрдЧ рдпрд╛ рддреГрддреАрдп-рдкрдХреНрд╖ рд▓рд┐рдВрдХ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рднреА рджреЗрдпрддрд╛ рдХреЛ рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рд╕рднреА рджреЗрдпрддрд╛ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред рдХрд┐рд╕реА рднреА рд╕реНрдХреНрд░реИрдкрд┐рдВрдЧ рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЕрдкрдиреЗ рдХрд╛рдиреВрдиреА рд╕рд▓рд╛рд╣рдХрд╛рд░ рд╕реЗ рдкрд░рд╛рдорд░реНрд╢ рдХрд░реЗрдВ рдФрд░ рд▓рдХреНрд╖реНрдп рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреА рд╕реЗрд╡рд╛ рдХреА рд╢рд░реНрддреЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдпрд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд▓реЗрдЦ

рд╕реВрдЪреА