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

рдХреИрд╕реЗ рдкрд╛рдпрдерди рдореЗрдВ рдореВрд▓реНрдп-рдЧрд┐рд░рд╛рд╡рдЯ рдЪреЗрддрд╛рд╡рдиреА рдмрдирд╛рдПрдВ: рд╕реНрдХреНрд░реИрдкрд▓реЗрд╕ рд╕реНрдХреНрд░реИрдкрд┐рдВрдЧ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреА рдирд┐рдЧрд░рд╛рдиреА

Alex Johnson
Alex Johnson

Senior Web Scraping Engineer

01-Jun-2026

рдореБрдЦреНрдп рдмрд╛рддреЗрдВ:

  • рдкрд╣рд▓реЗ рд░реЗрдВрдбрд░ рдХрд░реЗрдВ, рдлрд┐рд░ рдХреАрдордд рдкрдврд╝реЗрдВред рдЖрдзреБрдирд┐рдХ рдЦреБрджрд░рд╛ рдХреАрдорддреЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдкрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдкреЗрдВрдЯ рдХреА рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╣реЛрддреА рд╣реИрдВред рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реЗрдВрдбрд░ рдХреА рдЧрдИ рдкреГрд╖реНрда тАФ рди рдХрд┐ рдХрдЪреНрдЪрд╛ HTTP рдлрд╝реЗрдЪ тАФ рд╡рд╣ рд╣реИ рдЬреЛ рдПрдХ рд╢реМрдХрд╝реАрди рджреНрд╡рд╛рд░рд╛ рджреЗрдЦреА рдЧрдИ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред Scrapeless Scraping Browser рдЙрддреНрдкрд╛рдж рдкреГрд╖реНрда рдХреЛ рдПрдХ рдПрдВрдЯреА-рдбрд┐рдЯреЗрдХреНрд╢рди рдХреНрд▓рд╛рдЙрдб рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд░реЗрдВрдбрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рднрд░рд╛ рд╣реБрдЖ DOM рд▓реМрдЯрд╛рддрд╛ рд╣реИред
  • рдкреНрд░реЙрдХреНрд╕реА рджреЗрд╢ рдХреЛ рдЬреЛрдбрд╝реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдХреАрдордд рднреВрдЧреЛрд▓ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреА рд╣реИред рдХреАрдорддреЗрдВ, рдореБрджреНрд░рд╛ рдФрд░ рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреНрд╖реЗрддреНрд░ рдФрд░ IP рдкреНрд░рддрд┐рд╖реНрдард╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрджрд▓рддреА рд╣реИрдВред proxy_country="US" (рдпрд╛ рдЬрд┐рд╕ рдмрд╛рдЬрд╛рд░ рдХреА рд╕рддрд░реНрдХрддрд╛ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИ) рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рд╣рд░ рдЬрд╛рдВрдЪ рдЙрд╕реА рдИрдЧреНрд░реЗрд╕ рдкрд░ рдмрдиреА рд░рд╣рддреА рд╣реИ рддрд╛рдХрд┐ рдХреАрдорддреЛрдВ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рддреБрд▓рдиреАрдп рд╣реЛ рд╕рдХреЗред
  • рдХреАрдордд рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рд╕рд┐рд░реНрдл рдПрдХ рдЕрдкреЗрдВрдб-рдХреЗрд╡рд▓ рд▓реЙрдЧ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЬрд╛рдВрдЪ рдПрдХ {product, url, price, currency, checked_at} рд░рд┐рдХреЙрд░реНрдб рд▓рд┐рдЦрддреА рд╣реИред рд╕рддрд░реНрдХрддрд╛ рд▓реЙрдЬрд┐рдХ рдПрдХрд▓ рддреБрд▓рдирд╛ рд╣реИ: рдХреНрдпрд╛ рдирд╡реАрдирддрдо рдХреАрдордд рдкрд┐рдЫрд▓реЗ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рд╕реЗ рдХрдо рд╣реИ? рдпрд╣реА рд╕рдВрдкреВрд░реНрдг рдирд┐рд░реНрдгрдп рд╣реИред
  • рдПрдХ рдбреНрд░реЙрдк рдПрдХ рд╡реЗрдмрд╣реБрдХ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИред рдЬрдм рддреБрд▓рдирд╛ "рдХрдо" рдХрд╣рддреА рд╣реИ, рддреЛ рдПрдХ-рд▓рд╛рдЗрди requests.post рдПрдХ Slack/Discord/рдИрдореЗрд▓-рд░рд┐рд▓реЗ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдкрд░ рд╕рддрд░реНрдХрддрд╛ рднреЗрдЬрддреА рд╣реИред рдХреЛрдИ рдХрддрд╛рд░ рдирд╣реАрдВ, рдХреЛрдИ рдмреНрд░реЛрдХрд░ рдирд╣реАрдВ тАФ рдПрдХрд▓ HTTP рдХреЙрд▓ред
  • рдЗрд╕реЗ рд╢реЗрдбреНрдпреВрд▓ рдХрд░реЗрдВ рдФрд░ рдЪрд▓реЗ рдЬрд╛рдПрдВред рдПрдХ рдХреНрд░реЛрди рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐, рдПрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдп, рдпрд╛ рдПрдХ рд╕рд░реНрд╡рд░рд▓реЗрд╕ рдЯрд╛рдЗрдорд░ рдЪреЗрдХ рдХреЛ рдПрдХ рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдЪрд▓рд╛рддрд╛ рд╣реИред рд░реЗрдВрдбрд░ тЖТ рдирд┐рдХрд╛рд▓реЗрдВ тЖТ рддреБрд▓рдирд╛ тЖТ рд╕рддрд░реНрдХрддрд╛ рд▓реВрдк рдЗрддрдирд╛ рдЫреЛрдЯрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдмрд┐рдирд╛ рджреЗрдЦреЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред
  • рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЙрддреНрдкрд╛рдж рдкреГрд╖реНрдареЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд╣реА рд▓реВрдк рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдЙрддреНрдкрд╛рдж рдкреГрд╖реНрда рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ DOM рдореЗрдВ рдХреАрдордд рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рддрд╛ рд╣реИ тАФ рдИрдЧреНрд░реЗрд╕ рдХреЛ рдкрд┐рди рдХрд░реЗрдВ, рдПрдХ рд╕реНрдерд┐рд░ рдореВрд▓реНрдп рдиреЛрдб рдкрд░ рдПрдВрдХрд░ рдХрд░реЗрдВ, рдФрд░ рддреБрд▓рдирд╛ рдХрд╛ рдкреБрдирдГ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
  • рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдлреНрддред рдирдП Scrapeless рдЦрд╛рддреЛрдВ рдореЗрдВ рдореБрдлреНрдд Scraping Browser рд░рдирдЯрд╛рдЗрдо рд╢рд╛рдорд┐рд▓ рд╣реИ тАФ Scrapeless рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд╕рд╛рдЗрди рдЕрдк рдХрд░реЗрдВред

рдкрд░рд┐рдЪрдп: рдЦреБрдж рдЙрддреНрдкрд╛рдж рдкреГрд╖реНрда рдХреЛ рдлрд┐рд░ рд╕реЗ рди рд░рд┐рдлреНрд░реЗрд╢ рдХрд░реЗрдВ

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

рд░реБрдХрд╛рд╡рдЯ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдЙрддреНрдкрд╛рдж рдкреГрд╖реНрда рдЕрдм рдПрдХ рд╕реНрдерд┐рд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдирд╣реАрдВ рд╣реИред рдЦреБрджрд░рд╛ рдХреИрдЯрд▓реЙрдЧ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдкрд░ рд╣рд╛рдЗрдбреНрд░реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ: рдкреГрд╖реНрда рдПрдХ рдкрддрд▓реА рдЦреЛрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдФрд░ рдХреАрдордд, рдореБрджреНрд░рд╛, рдмрд┐рдХреНрд░реА рдзреНрд╡рдЬ, рдФрд░ рдЙрдкрд▓рдмреНрдзрддрд╛ рдПрдХ рдмрд╛рд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЪрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдкреЗрдВрдЯ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдПрдХ рд╕рд╛рдзрд╛рд░рдг HTTP рдЕрдиреБрд░реЛрдз рдЦреЛрд▓ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдХреАрдордд рдирд╣реАрдВред рд╕рдВрдЦреНрдпрд╛ рднреА рдХреНрд╖реЗрддреНрд░реАрдп рд╣реИ тАФ рдПрдХ рд╣реА URL рд╡рд┐рднрд┐рдиреНрди рдХреАрдорддреЗрдВ, рдореБрджреНрд░рд╛рдПрдВ, рдпрд╛ рд╕реНрдЯреЙрдХ рд╕реНрдерд┐рддрд┐ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ рдкреНрд░рддрд┐ рдИрдЧреНрд░реЗрд╕ IP тАФ рдФрд░ рдХрдИ рд╕рд╛рдЗрдЯреЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдПрдВрдЯреА-рдмреЙрдЯ рдЬрд╛рдВрдЪреЛрдВ рдХреЗ рдкреАрдЫреЗ рдЧреЗрдЯ рдХрд░рддреА рд╣реИрдВ рдЬреЛ HTTP 200 рд╕реНрдерд┐рддрд┐ рдХреЗ рддрд╣рдд рдПрдХ рдЪреБрдиреМрддреА рдкреГрд╖реНрда рд▓реМрдЯрд╛рддреА рд╣реИрдВред рдПрдХ рд╢реБрджреНрдз-HTTP рдкреЛрд▓рд░ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ "рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ" рдЪреБрдкрдЪрд╛рдк рдХреАрдорддреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдЪреБрдиреМрддреА рдкреГрд╖реНрда рд▓реЙрдЧрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рдкреЛрд╕реНрдЯ рдПрдХ Python рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ Scrapeless Scraping Browser рдкрд░ рдЪрд▓рддрд╛ рд╣реИ рдЬреЛ рдЙрди рдЧреИрдкреНрд╕ рдХреЛ рдЕрдВрдд рд╕реЗ рдЕрдВрдд рддрдХ рдмрдВрдж рдХрд░рддрд╛ рд╣реИ: рдПрдХ рдкрд┐рди рдХрд┐рдП рдЧрдП US рдЖрд╡рд╛рд╕реАрдп рдИрдЧреНрд░реЗрд╕ рдкрд░ рдПрдХ рдПрдВрдЯреА-рдбрд┐рдЯреЗрдХреНрд╢рди рдХреНрд▓рд╛рдЙрдб рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЙрддреНрдкрд╛рдж рдкреГрд╖реНрда рдХреЛ рд░реЗрдВрдбрд░ рдХрд░реЗрдВ, рд░реЗрдВрдбрд░ рдХреА рдЧрдИ DOM рд╕реЗ рдХреАрдордд рдирд┐рдХрд╛рд▓реЗрдВ, рдЗрд╕реЗ рдПрдХ рдЫреЛрдЯреЗ рдХреАрдордд-рдЗрддрд┐рд╣рд╛рд╕ рднрдВрдбрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдирд╡реАрдирддрдо рдореВрд▓реНрдп рдХреА рддреБрд▓рдирд╛ рдкрд┐рдЫрд▓реЗ рдирд┐рдореНрди рд╕реЗ рдХрд░реЗрдВ, рдФрд░ рдЬрдм рдХреАрдордд рдЧрд┐рд░рддреА рд╣реИ рддреЛ рдПрдХ рд╡реЗрдмрд╣реБрдХ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВред рдПрдХ рд╢реЗрдбреНрдпреВрд▓рд░ рд▓реВрдк рдХреЛ рдПрдХ рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдЪрд▓рд╛рддрд╛ рд╣реИред рд╡рд╣реА рд░реЗрдВрдбрд░ рдкреНрд░рд╛рдЗрдорд┐рдЯрд┐рд╡ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдЦреБрджрд░рд╛ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдХреЛ рд╢рдХреНрддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ 2026 рдореЗрдВ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда Zillow рд╕реНрдХреНрд░реИрдкрд░реНрд╕ред


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

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

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


Scrapeless Scraping Browser рдХреНрдпреЛрдВ

Scrapeless Scraping Browser рдПрдХ рдЕрдиреБрдХреВрд▓рди рдпреЛрдЧреНрдп, рдПрдВрдЯреА-рдбрд┐рдЯреЗрдХреНрд╢рди рдХреНрд▓рд╛рдЙрдб рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣реИ рдЬрд┐рд╕реЗ рд╡реЗрдм рдХреНрд░реЙрд╕рд▓рд░реНрд╕ рдФрд░ AI рдПрдЬреЗрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреАрдордд-рдЧрд┐рд░рдиреЗ рдХреА рд╕рддрд░реНрдХрддрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд▓рд╛рддрд╛ рд╣реИ:

  • 195+ рджреЗрд╢реЛрдВ рдореЗрдВ рдЖрд╡рд╛рд╕реАрдп рдкреНрд░реЙрдХреНрд╕реА, рддрд╛рдХрд┐ рд╕рддрд░реНрдХрддрд╛ рдЕрдкрдиреЗ рдИрдЧреНрд░реЗрд╕ рдХреЛ рдЙрд╕ рдмрд╛рдЬрд╛рд░ рдкрд░ рдкрд┐рди рдХрд░ рд╕рдХреЗ рдЬрд┐рд╕реЗ рдпрд╣ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИ тАФ рдХреАрдорддреЗрдВ, рдореБрджреНрд░рд╛ рдФрд░ рдЙрдкрд▓рдмреНрдзрддрд╛ рднреВрдЧреЛрд▓ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреА рд╣реИрдВ, рдФрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд proxy_country рд╣рд░ рдЬрд╛рдВрдЪ рдХреЛ рддреБрд▓рдирд╛рддреНрдордХ рд░рдЦрддрд╛ рд╣реИред
  • рдХреНрд▓рд╛рдЙрдб-рд╕рд╛рдЗрдб рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░реЗрдВрдбрд░рд┐рдВрдЧ, рддрд╛рдХрд┐ рдХреАрдордд, рдмрд┐рдХреНрд░реА рдзреНрд╡рдЬ, рдореБрджреНрд░рд╛ рдкреНрд░рддреАрдХ, рдФрд░ рд╕реНрдЯреЙрдХ рд╕реНрдерд┐рддрд┐ DOM рдореЗрдВ рднрд░рд╛ рд╣реБрдЖ рдЖ рдЬрд╛рдП, рди рдХрд┐ рдЦрд╛рд▓реА React рдЦреЛрд▓ рдХреЗ рд░реВрдк рдореЗрдВред
  • рдПрдВрдЯреА-рдбрд┐рдЯреЗрдХреНрд╢рди рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯрд┐рдВрдЧ рд╣рд░ рд╕рддреНрд░ рдореЗрдВ, рддрд╛рдХрд┐ рдЙрддреНрдкрд╛рдж рдкреГрд╖реНрда рд╡рд╣реА рджреГрд╢реНрдп рджрд┐рдЦрд╛рдП рдЬреЛ рдпрд╣ рдЬреИрд╡рд┐рдХ рдЯреНрд░реИрдлрд╝рд┐рдХ рджрд┐рдЦрд╛рддрд╛ рд╣реИ тАФ рдЬрд┐рд╕рдореЗрдВ рдЕрд╕рд▓реА рдХреАрдордд рдЧреНрд░рд┐рдб рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЪреБрдиреМрддреА рдкреГрд╖реНрда рдЬреЛ HTTP 200 рд╕реНрдерд┐рддрд┐ рдХреЗ рддрд╣рдд рд╕реЗрд╡рд╛ рджреА рдЬрд╛рддреА рд╣реИред
  • рд╕рддреНрд░ рд╕реНрдерд┐рд░рддрд╛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рджреМрд░рд╛рди, рддрд╛рдХрд┐ рдПрдХ рдЬрд╛рдВрдЪ рдЬреЛ рдЙрддреНрдкрд╛рдж рдкреГрд╖реНрда рдкрд░ рдЙрддрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реЛрдордкреЗрдЬ рдХреЛ рдЧрд░реНрдо рдХрд░рддреА рд╣реИ, рдХреБрдХреАрдЬрд╝ рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреЛ рдПрдХ рд░рди рдореЗрдВ рд╕рдорд╛рди рдмрдирд╛рдП рд░рдЦрддреА рд╣реИред
  • рдПрдХ рд╕рд╛рдл CDP рдПрдВрдбрдкреЙрдЗрдВрдЯ рдЬрд┐рд╕реЗ Puppeteer рдпрд╛ Playwright рд╕реАрдзреЗ рдЪрд▓рд╛рддрд╛ рд╣реИ тАФ CDP рдкрд░ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ рдХреНрд▓рд╛рдЙрдб рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрд╛рдХреА рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЕрдкрдирд╛ API рдХреБрдВрдЬреА рдореБрдлреНрдд рдпреЛрдЬрдирд╛ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ app.scrapeless.comред рд╕реНрдХреНрд░реИрдкрд┐рдВрдЧ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЙрддреНрдкрд╛рдж рдкреГрд╖реНрда рд░рдирдЯрд╛рдЗрдо рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░реЙрдХреНрд╕реА рд╕рдорд╛рдзрд╛рди рдЗрд╕реЗ рд╕рдорд░реНрдерд┐рдд рдЖрд╡рд╛рд╕реАрдп рдПрдЧреНрд░рд╕ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИред


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

  • Python 3.10 рдпрд╛ рдирдпрд╛ред
  • рдПрдХ Scrapeless рдЦрд╛рддрд╛ рдФрд░ API рдХреБрдВрдЬреА тАФ Scrapeless рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд╕рд╛рдЗрди рдЕрдк рдХрд░реЗрдВред SDK рдЗрд╕реЗ SCRAPELESS_API_KEY рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИред
  • Playwright for Python, рдЬреЛ CDP рдкрд░ рдХреНрд▓рд╛рдЙрдб рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЪрд▓рд╛рддрд╛ рд╣реИред рдХрдиреЗрдХреНрд╢рди рд╡рд┐рд╡рд░рдг рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ docs.scrapeless.com рдкрд░ред
  • рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рд╕рд╛рде рдмреБрдирд┐рдпрд╛рджреА рдкрд░рд┐рдЪрд┐рддрддрд╛ рдФрд░ рдЕрд▓рд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдмрд╣реБрдХ URL (Slack, Discord, рдпрд╛ рдХреЛрдИ рднреА рдИрдореЗрд▓ рд░рд┐рд▓реЗ)ред

рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ

CDP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд▓рд╛рдЙрдб рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП Playwright рдФрд░ рд╡реЗрдмрд╣реБрдХ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП requests рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:

bash Copy
pip install playwright requests

рдЕрдкрдиреА API рдХреБрдВрдЬреА рд╕реЗрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рдХрдиреЗрдХреНрд╢рди URL рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХреЗ:

bash Copy
export SCRAPELESS_API_KEY=your_api_token_here

рдпрд╣ рдкреВрд░реНрдг рд╕реЗрдЯрдЕрдк рд╣реИред Playwright рдХрд╛ connect_over_cdp Scrapeless рд╕реНрдХреНрд░реИрдкрд┐рдВрдЧ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдВрдбрдкреЙрдЗрдВрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрд╕рд▓реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ Scrapeless рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ тАФ рд╕реНрдерд╛рдиреАрдп Chromium рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреНрд▓рд╛рдЙрдб-рд╕рд╛рдЗрдб рд╣реЛрддреА рд╣реИред


рдЪрд░рдг 1 тАФ рдХреНрд▓рд╛рдЙрдб-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрдиреЗрдХреНрд╢рди URL рдмрдирд╛рдПрдБ

Scrapeless рд╕реНрдХреНрд░реИрдкрд┐рдВрдЧ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдХ CDP рдПрдВрдбрдкреЙрдЗрдВрдЯ рд╣реИред рдЕрдкрдиреЗ API рдХреБрдВрдЬреА рдХреЛ token рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рдПрдЧреНрд░рд╕ рдорд╛рд░реНрдХреЗрдЯ рдХреЛ proxyCountry рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реБрдП WebSocket URL рдмрдирд╛рдПрдВ; Playwright рд╕реАрдзреЗ рдЗрд╕рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред

python Copy
import os
from urllib.parse import urlencode
from playwright.sync_api import sync_playwright

def scraping_browser_url(proxy_country: str = "US", session_ttl: int = 240) -> str:
    # API рдХреБрдВрдЬреА URL рдкрд░ `token` рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рддреА рд╣реИ; рдПрдЧреНрд░рд╕ рдФрд░ рд▓рд╛рдЗрдлрдЯрд╛рдЗрдо рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВред
    params = urlencode({
        "token": os.environ["SCRAPELESS_API_KEY"],
        "sessionTTL": session_ttl,
        "proxyCountry": proxy_country,
    })
    return f"wss://browser.scrapeless.com/api/v2/browser?{params}"

proxyCountry рдПрдХ рдореВрд▓реНрдп рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рд▓реЛрдб-рдмреЗрдпрд░рд┐рдВрдЧ рдзреНрд╡рдЬ рд╣реИ: рд╡рд╣реА рдЙрддреНрдкрд╛рдж URL рдПрдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдЕрд▓рдЧ рдХреАрдордд, рдореБрджреНрд░рд╛, рдпрд╛ рдЙрдкрд▓рдмреНрдзрддрд╛ рд╕реНрдерд┐рддрд┐ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдЧреНрд░рд╕ рдХреЛ рд╕реНрдерд┐рд░ рд░рдЦрдирд╛ рд╣рд░ рд░рд┐рдХреЙрд░реНрдб рдХреА рдЧрдИ рдХреАрдордд рдХреЛ рдПрдХ рд╣реА рдмрд╛рдЬрд╛рд░ рдкрд░ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИред sessionTTL рдореЗрдВ рд╕реЗрдХрдВрдбреЛрдВ рдореЗрдВ рд╕рддреНрд░ рдХрд╛ рдЬреАрд╡рдирдХрд╛рд▓ рд╣реЛрддрд╛ рд╣реИ тАФ рдЗрд╕реЗ рдЗрддрдирд╛ рд▓рдВрдмрд╛ рд░рдЦреЗрдВ рдХрд┐ рдкреГрд╖реНрда рд░реЗрдВрдбрд░ рд╣реЛ рд╕рдХреЗ рдФрд░ рдХреАрдордд рдкрдврд╝реА рдЬрд╛ рд╕рдХреЗред


рдЪрд░рдг 2 тАФ рдЙрддреНрдкрд╛рдж рдкреГрд╖реНрда рдХреЛ рд░реЗрдВрдбрд░ рдХрд░реЗрдВ рдФрд░ рдХреАрдордд рдкрдврд╝реЗрдВ

CDP рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕рддреНрд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ, рдЙрддреНрдкрд╛рдж рдкреГрд╖реНрда рдХреЛ рд░реЗрдВрдбрд░ рдХрд░реЗрдВ, рдФрд░ рднрд░реЗ рд╣реБрдП DOM рд╕реЗ рдХреАрдордд рдХреЛ рдирд┐рдХрд╛рд▓реЗрдВред рдПрдХ рдЕрдореЗрд░рд┐рдХреА рдЖрд╡рд╛рд╕реАрдп Scrapeless рд╕рддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Walmart рдЦреЛрдЬ URL рдХреА рд▓рд╛рдЗрд╡ рд░реЗрдВрдбрд░рд┐рдВрдЧ HTTP 200 рдХреЗ рд╕рд╛рде рдЕрд╕рд▓реА рдЙрддреНрдкрд╛рдж рдЧреНрд░рд┐рдб рд▓реМрдЯрд╛рддреА рд╣реИ тАФ рд╢реАрд░реНрд╖рдХ рд▓реИрдкрдЯреЙрдк - Walmart.com рдХреЗ рд░реВрдк рдореЗрдВ рд╣рд▓ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдкреГрд╖реНрда рдЙрддреНрдкрд╛рдж рд▓рд┐рдВрдХ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рд░реВрдк рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ https://www.walmart.com/ip/<slug>/<id>ред рд╡реЗ /ip/ рдкреГрд╖реНрда рдореВрд▓реНрдп рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐-рдЙрддреНрдкрд╛рдж рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг рдПрдХ рдРрд╕реЗ рдЙрддреНрдкрд╛рдж рдкреГрд╖реНрда рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИред

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

python Copy
PRODUCT = "рдЙрджрд╛рд╣рд░рдг 15-рдЗрдВрдЪ рд▓реИрдкрдЯреЙрдк"
URL = "https://www.walmart.com/ip/example-15-inch-laptop/123456789"

def read_price(url: str) -> dict:
    # Playwright рдХреЗ рд╕рд╛рде CDP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Scrapeless рд╕реНрдХреНрд░реИрдкрд┐рдВрдЧ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЪрд▓рд╛рдПрдБред
    with sync_playwright() as p:
        browser = p.chromium.connect_over_cdp(scraping_browser_url("US"))
        page = browser.new_page()

        # рдкрд╣рд▓реЗ рд╣реЛрдордкреЗрдЬ рдкрд░ рд╕рддреНрд░ рдХреЛ рдЧрд░реНрдо рдХрд░реЗрдВ, рдлрд┐рд░ рдЙрддреНрдкрд╛рдж рдкреГрд╖реНрда рдкрд░ рдЙрддрд░реЗрдВ
        # рддрд╛рдХрд┐ рдХреАрдордд рдЧреНрд░рд┐рдб рд░реЗрдВрдбрд░ рд╣реЛ рд╕рдХреЗред
        page.goto("https://www.walmart.com/", wait_until="domcontentloaded")
        page.wait_for_timeout(2500)
        page.goto(url, wait_until="domcontentloaded")
        page.wait_for_timeout(3000)   # рдХреАрдордд рдиреЛрдб рдХреЛ рд╣рд╛рдЗрдбреНрд░реЗрдЯ рд╣реЛрдиреЗ рджреЗрдВ

        # рдПрдХ рд╕реНрдерд┐рд░ рдХреАрдордд рдиреЛрдб рдкрд░ рдПрдВрдХрд░ рдХрд░реЗрдВред рдЦреБрджрд░рд╛ рд╡рд┐рдХреНрд░реЗрддрд╛ рд╣реИрд╢ рдХрд┐рдП рдЧрдП рдХреНрд▓рд╛рд╕ рдирд╛рдо рдмрджрд▓рддреЗ рд╣реИрдВ,
        # рдЗрд╕рд▓рд┐рдП рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рдПрдВрдХрд░ (itemprop, data-testid, aria-label) рдкрд╕рдВрдж рдХрд░реЗрдВред
        price_node = page.query_selector('[itemprop="price"], [data-testid="price-wrap"]')
        price_text = price_node.inner_text() if price_node else ""
        browser.close()

    # "$1,299.00" рдХреЛ 1299.0 рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдХрд░реЗрдВ

рдбрд┐рдЬрд┐рдЯ = "".рдЬреЛрдбрд╝реЗрдВ(ch рдХреЗ рд▓рд┐рдП ch in price_text рдпрджрд┐ ch.isdigit() рдпрд╛ ch == ".")
рдореВрд▓реНрдп = рдмрд╣реБ(float)(рдбрд┐рдЬрд┐рдЯ) рдпрджрд┐ рдбрд┐рдЬрд┐рдЯ рдЕрдиреНрдпрдерд╛ None
рд╡рд╛рдкрд╕ {"рдЙрддреНрдкрд╛рдж": PRODUCT, "url": url, "рдореВрд▓реНрдп": рдореВрд▓реНрдп, "рдореБрджреНрд░рд╛": "USD"}

Copy
рд░реЗрдВрдбрд░ рдЙрд╕ DOM рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХрд╛рд░реНрдмрдирд┐рдХ рдЯреНрд░реИрдлрд╝рд┐рдХ рджреЗрдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореВрд▓реНрдп рдиреЛрдб рдЬреАрд╡рд┐рдд, рдХреНрд╖реЗрддреНрд░-рд╕рд╣реА рд╕рдВрдЦреНрдпрд╛ рд╡рд╣рди рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╕рдВрд╡реЗрджрдирд╛рддреНрдордХ рдЪрдпрдирдХрд░реНрддрд╛ (`itemprop`, `data-testid`, `aria-label`) рдкрд░ рдПрдВрдХрд░ рдХрд░реЗрдВ рдмрдЬрд╛рдп рдПрдХ эХ┤рд╢ рдХрд┐рдП рд╣реБрдП рд╡рд░реНрдЧ рдирд╛рдо рдХреЗ тАФ рд╡рд░реНрдЧ рдирд╛рдо рддреИрдирд╛рддреА рдХреЗ рджреМрд░рд╛рди рдШреВрдорддреЗ рд╣реИрдВ, рд╕рдВрд╡реЗрджрдирд╛рддреНрдордХ рдПрдВрдХрд░ рдирд╣реАрдВред рдпрджрд┐ рдПрдХ рдкреГрд╖реНрда рдбреЙрд▓рд░ рдФрд░ рд╕реЗрдВрдЯ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдиреЛрдбреНрд╕ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рджреЛрдиреЛрдВ рдХреЛ рдкрдврд╝реЗрдВ рдФрд░ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рд╕реЗ рдкрд╣рд▓реЗ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝реЗрдВред

> рдЖрдкрдХреА рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдореБрдлреНрдд рдпреЛрдЬрдирд╛ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ: [Scrapeless рд╡реЗрдмрд╕рд╛рдЗрдЯ](https://app.scrapeless.com/passport/login/?utm_source=website&utm_medium=blog&utm_campaign=scrapingbrowser&utm_term=PriceDropAlert)

---

## рдЪрд░рдг 3 тАФ рдореВрд▓реНрдп рдЗрддрд┐рд╣рд╛рд╕ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВ

рдореВрд▓реНрдп рдЗрддрд┐рд╣рд╛рд╕ рдПрдХ рдХреЗрд╡рд▓-рдкрд░рд┐рд╢рд┐рд╖реНрдЯ рдкрдВрдЬреАрдХрд░рдг рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЬрд╛рдВрдЪ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рд▓рд┐рдЦрддреА рд╣реИ; рдлрд╝рд╛рдЗрд▓ рдЪрд░рдг 4 рдореЗрдВ рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП рд╕рддреНрдп рдХрд╛ рд╕реНрд░реЛрдд рд╣реИред рдПрдХ рдиреНрдпреВрд▓рд╛рдЗрди-рд╕реАрдорд╛рдВрдХрд┐рдд JSON рдлрд╝рд╛рдЗрд▓ (JSONL) рдЗрд╕реЗ рдХреЗрд╡рд▓-рдкрд░рд┐рд╢рд┐рд╖реНрдЯ рд░рдЦрддреА рд╣реИ рдФрд░ рд╡рд╛рдкрд╕ рдкрдврд╝рдиреЗ рдореЗрдВ рддреБрдЪреНрдЫ рдмрдирд╛рддреА рд╣реИ:

```python
рдЖрдпрд╛рдд json
рд╕реЗ datetime рдЖрдпрд╛рдд datetime, timezone

HISTORY_FILE = "price_history.jsonl"

def append_history(record: dict) -> dict:
    рд░рд┐рдХреЙрд░реНрдб = {
        **рд░рд┐рдХреЙрд░реНрдб,
        # рдПрдХ рдкрдардиреАрдп UTC рд╕реНрдЯреИрдореНрдк; рдпрджрд┐ рдПрдХ рд╕рдЦреНрдд рд╕рдордп рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рддреЛ Unix рдпреБрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрд╡реИрдк рдХрд░реЗрдВред
        "checked_at": datetime.now(timezone.utc).strftime("%d-%b-%Y %H:%M UTC"),
    }
    рдХреЗ рд╕рд╛рде open(HISTORY_FILE, "a", encoding="utf-8") рдЬреИрд╕рд╛ f:
        f.write(json.dumps(record) + "\n")
    рд╡рд╛рдкрд╕ рд░рд┐рдХреЙрд░реНрдб

def load_history(url: str) -> list[dict]:
    рдкрдВрдХреНрддрд┐рдпрд╛рдБ = []
    рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ:
        рдХреЗ рд╕рд╛рде open(HISTORY_FILE, encoding="utf-8") рдЬреИрд╕рд╛ f:
            рдХреЗ рд▓рд┐рдП line in f:
                row = json.loads(line)
                рдпрджрд┐ row.get("url") == url:
                    rows.append(row)
    except FileNotFoundError:
        рдкрд╛рд╕
    рд╡рд╛рдкрд╕ рдкрдВрдХреНрддрд┐рдпрд╛рдБ

рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рдХреЙрд░реНрдб рд╕рд╛рдорд╛рдиреНрдп {product, url, price, currency, checked_at} рдЖрдХреГрддрд┐ рд╣реИред checked_at рдПрдХ UTC ISO рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╣реИ рдЬреЛ рдкрдврд╝рдиреЗ рдХреЗ рд╕рдордп рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЖрддреНрдо-рд╡рд┐рд╡рд░рдгрд╛рддреНрдордХ рд╣реИред рдХрдИ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП, JSONL рдлрд╝рд╛рдЗрд▓ рдХреЛ SQLite рддрд╛рд▓рд┐рдХрд╛ рдпрд╛ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рд╕реНрд╡реИрдк рдХрд░реЗрдВ тАФ рд╕реНрдХреАрдорд╛ рд╕рдорд╛рди рд╣реИ, рдФрд░ рддреБрд▓рдирд╛ рддрд░реНрдХ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред


рдЪрд░рдг 4 тАФ рдкрд┐рдЫрд▓реЗ рдирд┐рдореНрдирддрдо рдХреЗ рдЦрд┐рд▓рд╛рдл рддреБрд▓рдирд╛ рдХрд░реЗрдВ рдФрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдВ

рдЕрд▓рд░реНрдЯ рдирд┐рд░реНрдгрдп рдПрдХрд▓ рддреБрд▓рдирд╛ рд╣реИ: рдХреНрдпрд╛ рдирд╡реАрдирддрдо рдореВрд▓реНрдп рдЗрд╕ URL рдХреЗ рд▓рд┐рдП рдЕрдм рддрдХ рджреЗрдЦреЗ рдЧрдП рдирд┐рдореНрдирддрдо рдореВрд▓реНрдп рд╕реЗ рдиреАрдЪреЗ рд╣реИ? рдкреВрд░реНрд╡ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рдЦреАрдВрдЪреЗрдВ, рдкреВрд░реНрд╡ рдХреЗ рдиреНрдпреВрдирддрдо рдХреЛ рдЦреЛрдЬреЗрдВ, рдФрд░ рддреБрд▓рдирд╛ рдХрд░реЗрдВред

python Copy
def is_price_drop(url: str, current: float) -> dict:
    prior = [r["price"] for r in load_history(url) if r.get("price") is not None]
    previous_low = min(prior) рдпрджрд┐ prior рдЕрдиреНрдпрдерд╛ None

    рдЧрд┐рд░рд╛ рд╣реБрдЖ = (
        current is not None
        рдФрд░ previous_low is not None
        рдФрд░ current < previous_low
    )
    рд╡рд╛рдкрд╕ {
        "рдЧрд┐рд░рд╛": рдЧрд┐рд░рд╛ рд╣реБрдЖ,
        "рд╡рд░реНрддрдорд╛рди": рд╡рд░реНрддрдорд╛рди,
        "рдкреВрд░реНрд╡_рдиреНрдпреВрдирддрдо": previous_low,
        "delta": (current - previous_low) рдпрджрд┐ рдЧрд┐рд░рд╛ рд╣реБрдЖ рдЕрдиреНрдпрдерд╛ None,
    }

рдПрдХ рдЙрддреНрдкрд╛рдж рдХреА рдкрд╣рд▓реА рдмрд╛рд░ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдкрд░ рдХреЛрдИ рдкреВрд░реНрд╡ рдЗрддрд┐рд╣рд╛рд╕ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП previous_low None рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рдЕрд▓рд░реНрдЯ рдирд╣реАрдВ рдЪрд▓рддрд╛ рд╣реИ тАФ рд░рди рд▓реЙрдЧ рдХреЛ рдмреАрдЬ рджреЗрддрд╛ рд╣реИред рджреВрд╕рд░реА рдЬрд╛рдВрдЪ рдХреЗ рдмрд╛рдж, рдХреЛрдИ рднреА рдореВрд▓реНрдп рдЬреЛ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рдореНрдирддрдо рд╕реЗ рд╕реНрдкрд╖реНрдЯрддрд╛ рд╕реЗ рдиреАрдЪреЗ рд╣реИ рд╡рд╣ рдПрдХ рдЧрд┐рд░рд╛рд╡рдЯ рд╣реИред рдХрд┐рд╕реА рд▓рдХреНрд╖рд┐рдд рдореВрд▓реНрдп рдХреЗ рдЦрд┐рд▓рд╛рдл рдЕрд▓рд╛рд░реНрдо рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, current рдХреА рддреБрд▓рдирд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдереНрд░реЗрд╢реЛрд▓реНрдб рд╕реЗ рдХрд░реЗрдВ; рдкрд┐рдЫрд▓реЗ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдЦрд┐рд▓рд╛рдл рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рдЫрд▓реЗ рдЬрд╛рдВрдЪ рдХреЗ рдЦрд┐рд▓рд╛рдл, рдкрд┐рдЫрд▓реЗ рдиреНрдпреВрдирддрдо рдХреЗ рдмрдЬрд╛рдп рддреБрд▓рдирд╛ рдХрд░реЗрдВред рд╕реНрдЯреЛрд░ рдФрд░ рд░реЗрдВрдбрд░ рдЪрд░рдг рд╡рд╣реА рд░рд╣рддреЗ рд╣реИрдВ рдЪрд╛рд╣реЗ рдХреЛрдИ рднреА рдирд┐рдпрдо рдлрд╛рдпрд░ рд╣реЛред


рдЪрд░рдг 5 тАФ рдЧрд┐рд░рд╛рд╡рдЯ рдкрд░ рдПрдХ рд╡реЗрдмрд╣реБрдХ рдлрд╛рдпрд░ рдХрд░реЗрдВ

рдЬрдм рддреБрд▓рдирд╛ "рдЧрд┐рд░ рдЧрдИ" рдХрд╣рддреА рд╣реИ, рддреЛ рдЕрд▓рд░реНрдЯ рднреЗрдЬреЗрдВред рдПрдХ рд╡реЗрдмрд╣реБрдХ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд┐рддрд░рдг рдкрде рд╣реИ тАФ рдПрдХ рдПрдХрд▓ requests.post Slack, Discord, рдпрд╛ рдИрдореЗрд▓-рд░рд┐рд▓реЗ рдЕрдВрдд рдмрд┐рдВрджреБ рдкрд░ред рдХреЛрдИ рджрд▓рд╛рд▓, рдХреЛрдИ рдХрддрд╛рд░ рдирд╣реАрдВред

python Copy
рдЖрдпрд╛рдд requests

WEBHOOK_URL = os.environ["PRICE_ALERT_WEBHOOK"]  # Slack / Discord / рд░рд┐рд▓реЗ URL

def send_alert(record: dict, decision: dict) -> None:
    рд╕рдВрджреЗрд╢ = (
        f"рдореВрд▓реНрдп рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ: {record['product']}\n"
        f"рдЕрдм {record['currency']} {decision['current']:.2f} "
        f"(рдерд╛ {decision['previous_low']:.2f}, "
        f"рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ {abs(decision['delta']):.2f})\n"
        f"{record['url']}"
    )
    рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ = requests.post(WEBHOOK_URL, json={"text": message}, timeout=15)
    рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛.raise_for_status()

raise_for_status() рдПрдХ рдЧреИрд░-2xx рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╡реЗрдмрд╣реБрдХ рд╕реЗ рд╕рд╛рдордиреЗ рд▓рд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдПрдХ рдЧрд▓рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЕрдВрдд рдмрд┐рдВрджреБ рдЬреЛрд░рджрд╛рд░ рддрд░реАрдХреЗ рд╕реЗ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдП рдмрдЬрд╛рдп рдЪреБрдкрдЪрд╛рдк рдЕрд▓рд░реНрдЯ рдХреЛ рдЧрд┐рд░рд╛рдиреЗ рдХреЗред {"text": message} рд╢рд░реАрд░ рд╕реНрд▓реИрдХ рдФрд░ рдбрд┐рд╕реНрдХреЛрд░реНрдб рдЗрдирдХрдорд┐рдВрдЧ-рд╡реЗрдмрд╣реБрдХ рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ; рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдВрдд рдмрд┐рдВрджреБ рдХреА рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ JSON рдЖрдХрд╛рд░ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВред

рдкрд╛рдБрдЪ рдЪрд░рдгреЛрдВ рдХреЛ рдПрдХ рдЬрд╛рдВрдЪ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛:

python Copy
def check_once():
    reading = read_price(URL)                  # рдЪрд░рдг 2: рд░реЗрдВрдбрд░ + рдирд┐рдХрд╛рд▓реЗрдВ
    record = append_history(reading)           # рдЪрд░рдг 3: рд╕реНрдЯреЛрд░
    decision = is_price_drop(URL, record["price"])  # рдЪрд░рдг 4: рддреБрд▓рдирд╛
    рдпрджрд┐ рдирд┐рд░реНрдгрдп["рдЧрд┐рд░рд╛"]:
        send_alert(record, decision)           # рдЪрд░рдг 5: рдЕрд▓рд╛рд░реНрдо
    рд╡рд╛рдкрд╕ рд░рд┐рдХреЙрд░реНрдб, рдирд┐рд░реНрдгрдп

рдЪрд░рдг 6 тАФ рдЬрд╛рдВрдЪ рдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдирд╛рдПрдВ

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

рд▓рд┐рдирдХреНрд╕ рдпрд╛ macOS рдкрд░, рдПрдХ рдХреНрд░реЛрди рдПрдВрдЯреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рджрд┐рди рдореЗрдВ рдПрдХ рдмрд╛рд░ 09:00 рдмрдЬреЗ рдЪрд▓рд╛рддреА рд╣реИ:

bash Copy
# crontab -e
0 9 * * * cd /opt/price-watch && /usr/bin/python3 check.py >> watch.log 2>&1

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

python Copy
WATCHLIST = [
    "https://www.walmart.com/ip/example-15-inch-laptop/123456789",
    "https://www.walmart.com/ip/example-wireless-headphones/987654321",
]

def run_watchlist():
    for url in WATCHLIST:
        reading = read_price(url)              # рдкреНрд░рддреНрдпреЗрдХ рдкрдврд╝рд╛рдИ рдирд╡реАрдирддрдо рдХрдиреЗрдХреНрд╢рди, рдЕрдореЗрд░рд┐рдХрд╛ рдХрд╛ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ
        record = append_history(reading)
        decision = is_price_drop(url, record["price"])
        if decision["dropped"]:
            send_alert(record, decision)

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

рдкреНрд░рддреНрдпреЗрдХ рдЬрд╛рдВрдЪ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдЗрддрд┐рд╣рд╛рд╕ рд▓реЙрдЧ рдореЗрдВ рдЬреЛрдбрд╝рддреА рд╣реИред рдЖрдХрд╛рд░ рдорд╛рдирдХ рдореВрд▓реНрдп-рджреЗрдЦрдиреЗ рд╡рд╛рд▓реЗ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рд╣реИ:

json Copy
// рд╕реНрдХреАрдорд╛ рдареАрдХ рдЙрд╕реА рдЪреАрдЬрд╝ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдЬреЛ append_history рд▓рд┐рдЦрддрд╛ рд╣реИред
// рдлрд╝реАрд▓реНрдб рдорд╛рди рдЪрд┐рддреНрд░рд╛рддреНрдордХ рдирдореВрдиреЗ рд╣реИрдВ, рдХрд┐рд╕реА рдЙрддреНрдкрд╛рдж рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрдарди рдирд╣реАрдВред
{
  "product": "Example 15-inch Laptop",
  "url": "https://www.walmart.com/ip/example-15-inch-laptop/123456789",
  "price": 1299.00,
  "currency": "USD",
  "checked_at": "25-May-2026 09:00 UTC"
}

рд╕рдордп рдХреЗ рд╕рд╛рде рд▓реЙрдЧ рдПрдХ рд╕рд╛рдл рдореВрд▓реНрдп рд╕рдордп рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрди рдЬрд╛рддрд╛ рд╣реИ - рдкреНрд░рддреНрдпреЗрдХ рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд╛рдЗрди, рдЪрд╛рд░реНрдЯ рдореЗрдВ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдпрд╛ рдПрдХ рдЯреНрд░реЗрдВрдб рдореЙрдбрд▓ рдХреЛ рдлреАрдб рджреЗрдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдИрдорд╛рдирджрд╛рд░ рдЕрд╡рд▓реЛрдХрди, ╨╝╨░╤Б╤И╤В╨░╨▒ рдкрд░ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╛рдирдирд╛ рдЙрдЪрд┐рдд рд╣реИ:

  • рднреВрдЧреЛрд▓ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рджрд░реНрдЬ рдХреА рдЧрдИ рдореВрд▓реНрдп рдХреЗрд╡рд▓ рдЙрд╕ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдХреА рд╕рд╛рдкреЗрдХреНрд╖ рдореВрд▓реНрдпрд╡рд╛рди рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЗрд╕реЗ рдкрдврд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡реЙрдЪ рдХреЗ рд▓рд┐рдП proxy_country рдХреЛ рд╕реНрдерд┐рд░ рд░рдЦреЗрдВ; рдпрджрд┐ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдмрд╛рдЬрд╛рд░реЛрдВ рдореЗрдВ рдХреАрдорддреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рд╛рде рджреЗрд╢ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВред
  • рд╕рд┐рд▓реЗрдХреНрдЯрд░ рд╕реНрдерд┐рд░рддрд╛ред itemprop, data-testid, рдпрд╛ aria-label рдиреЛрдбреНрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд░рд╣реЗрдВред рд╣реИрд╢реЗрдб рдХреНрд▓рд╛рд╕ рдирд╛рдо рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдХреЗ рджреМрд░рд╛рди рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЪреБрдкрдЪрд╛рдк None рд▓реМрдЯрд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЬрдм рдХреЛрдИ рдореВрд▓реНрдп рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд░реЗрдВрдбрд░ рдХреА рдЧрдИ DOM рдХрд╛ рдлрд┐рд░ рд╕реЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВ рдФрд░ рдЕрдВрдХрд░ рдХреЛ рдХрдбрд╝рд╛ рдХрд░реЗрдВред
  • рдореВрд▓реНрдп рдиреЛрдбреНрд╕ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВред рдХреБрдЫ рдкреГрд╖реНрда рдбреЙрд▓рд░ рдФрд░ рд╕реЗрдВрдЯ (рдпрд╛ рдореБрджреНрд░рд╛ рдкреНрд░рддреАрдХ рдФрд░ рд░рд╛рд╢рд┐) рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрддреНрд╡реЛрдВ рдореЗрдВ рд░реЗрдВрдбрд░ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдкрдврд╝реЗрдВ рдФрд░ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рд╕реЗ рдкрд╣рд▓реЗ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдЕрдиреНрдпрдерд╛ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдВрдЦреНрдпрд╛ рдЧрд▓рдд рд╣реЛрдЧреАред
  • рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдореВрд▓реНрдп рдирд╣реАрдВ рд╣реИред рдПрдХ рдкреГрд╖реНрда HTTP 200 рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рднреА рдЪреБрдиреМрддреА рдпрд╛ рдЗрдВрдЯрд░реНрд╕реНрдЯрд┐рд╢рд┐рдпрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореВрд▓реНрдп рдиреЛрдб рдореМрдЬреВрдж рд╣реИ рдФрд░ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд┐ рдЕрдиреБрд░реЛрдз рд╕рдлрд▓ рд╣реБрдЖ рд╣реИ, рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрдврд╝рд╛рдИ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВред
  • рдирд▓ рдореВрд▓реНрдпред рдПрдХ рдЧрд╛рдпрдм рдореВрд▓реНрдп рдХреЛ None рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдиреЗрдВ рди рдХрд┐ рд╢реВрдиреНрдп рдХреЗ рд░реВрдк рдореЗрдВред рдЪрд░рдг 4 рдореЗрдВ рддреБрд▓рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА None рдкрдврд╝рд╛рдИ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ occasional рдЕрдирдкрд╛рд░реНрд╕реЗрдмрд▓ рдкреГрд╖реНрда рдХреЛрдИ рдЭреВрдард╛ рдЕрд▓рд░реНрдЯ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖: рдкрд╛рдВрдЪ рдореВрд╡ рдореЗрдВ рдПрдХ рдореВрд▓реНрдп рд╡реЙрдЪ

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

рдЕрдиреНрдп рдЦреБрджрд░рд╛ рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡реЙрдЪ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╣реА рд▓реВрдк рдлрд┐рд░ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рд╕рд╣реА рдмрд╛рдЬрд╛рд░ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдХреЛ рдкрд┐рди рдХрд░реЗрдВ, рдЙрд╕ рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд┐рд░ рдореВрд▓реНрдп рдиреЛрдб рдкрд░ рдЕрдВрдХрд░ рдХрд░реЗрдВ, рдФрд░ рддреБрд▓рдирд╛ рдХреЛ рдмрд┐рдирд╛ рдЫреЗрдбрд╝реЗ рд░рдЦреЗрдВред рд╡рд┐рд╢реЗрд╖ рдЦреБрджрд░рд╛ рд╡рд┐рдХреНрд░реЗрддрд╛ рд░реЗрдВрдбрд░ рдФрд░ рд╕рд┐рд▓реЗрдХреНрдЯрд░ рдкреИрдЯрд░реНрди рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдЕрдореЗрдЬрд╝рди рд╕реНрдХреНрд░реИрдкрд░реНрд╕ рд░рд╛рдЙрдВрдбрдЕрдк рдФрд░ 2026 рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдЬрд╝рд┐рд▓реЛ рд╕реНрдХреНрд░реИрдкрд░реНрд╕ рдореЗрдВ рд╕реАрдзреЗ рдЪрд░рдг 2 рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░реЙрдХреНрд╕реА рджреЗрд╢ рдХреЛ рдкрд┐рди рдХрд░реЗрдВ, рд╕реЗрдорд╛рдВрдЯрд┐рдХ рд╕рд┐рд▓реЗрдХреНрдЯрд░реНрд╕ рдкрд░ рдЕрдВрдХрд░ рдХрд░реЗрдВ, рдЕрдиреБрдкрд╕реНрдерд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдиреЗрдВ, рдФрд░ рдкреНрд░рддрд┐ рд╣реЛрд╕реНрдЯ рд╕рдВрдпрдорд┐рдд рд░рдЦреЗрдВред


рдЖрдкрдХреЗ рдПрдЖрдИ-рдкрд╛рд╡рд░реНрдб рдбреЗрдЯрд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ?

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

Scrapeless рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд╕рд╛рдЗрди рдЕрдк рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЖрдкрдХреЛ рдореБрдлреНрдд рд╕реНрдХреНрд░реИрдкрд┐рдВрдЧ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд░рдирдЯрд╛рдЗрдо рдорд┐рд▓ рд╕рдХреЗ рдФрд░ рдКрдкрд░ рджрд┐рдП рдЧрдП рдкреИрдЯрд░реНрди рдХреЛ рдЙрди рдЙрддреНрдкрд╛рджреЛрдВ рдФрд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХреЗрдВ рдЬрд┐рдирдХреА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдпреЛрдЬрдирд╛ рд╡рд┐рд╡рд░рдг рджреЗрдЦреЗрдВред


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

рдкреНрд░рд╢реНрди 1: рдХреНрдпрд╛ рдПрдХ рдореВрд▓реНрдп рдЧрд┐рд░рдиреЗ рдХреА рдЕрд▓рд░реНрдЯ рдмрдирд╛рдирд╛ рдХрд╛рдиреВрдиреА рд╣реИ?
Here is the Hindi translation of the text you provided:

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

рдкреНрд░рд╢реНрди 2: рдХреНрдпрд╛ рдореБрдЭреЗ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдХреНрдпрд╛ рджреЗрд╢ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ?
рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣рд╛рдБред рдХреАрдорддреЗрдВ, рдореБрджреНрд░рд╛, рдФрд░ рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреНрд╖реЗрддреНрд░ рдФрд░ рдЖрдИрдкреА рдкреНрд░рддрд┐рд╖реНрдард╛ рджреНрд╡рд╛рд░рд╛ рдмрджрд▓рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдЖрд╡рд╛рд╕реАрдп рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рджреЗрд╢ рдХрд╛ рднрд╛рд░ рдЙрдард╛рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред proxy_country рдХреЛ рдЙрд╕ рдмрд╛рдЬрд╛рд░ рдкрд░ рдкрд┐рди рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рд╕реВрдЪрдирд╛ рдЯреНрд░реИрдХ рдХрд░рддреА рд╣реИ - рдпрд╣рд╛рдБ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ "US" - рддрд╛рдХрд┐ рд╣рд░ рджрд░реНрдЬ рдХреА рдЧрдИ рдХреАрдордд рд╕рдорд╛рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╣реЛред рд╡рд┐рднрд┐рдиреНрди рдмрд╛рдЬрд╛рд░реЛрдВ рдореЗрдВ рдПрдХ рдЙрддреНрдкрд╛рдж рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рджреЗрд╢ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдЧрд░рд╛рдиреА рдЪрд▓рд╛рдПрдБ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреАрдордд рдХреЗ рд╕рд╛рде рджреЗрд╢ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВред

рдкреНрд░рд╢реНрди 3: рд╕рд┐рд░реНрдл рдПрдХ рдПрдЪрдЯреАрдЯреАрдкреА рдЕрдиреБрд░реЛрдз рдХреНрдпреЛрдВ рди рднреЗрдЬреЗрдВ рдФрд░ рдХреАрдордд рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ?
рдЬрд╝реНрдпрд╛рджрд╛рддрд░ рдЦреБрджрд░рд╛ рдХреАрдорддреЛрдВ рдХреЛ рдЧреНрд░рд╛рд╣рдХ-рдкрдХреНрд╖ рдкрд░ рдЙрд╕ рд╕рдордп рд░рдВрдЧрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдХрдЪреНрдЪрд╛ рдПрдЪрдЯреАрдЯреАрдкреА рдлреЗрдЪ рдПрдХ рдЦрд╛рд▓реА рдЦреЛрд▓ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВред рдХрдИ рд╕рд╛рдЗрдЯреЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рддрд╣рдд рдПрдЪрдЯреАрдЯреАрдкреА 200 рд╕реНрдерд┐рддрд┐ рдХреЗ рддрд╣рдд рдПрдХ рдПрдВрдЯреА-рдмреЙрдЯ рдЪреБрдиреМрддреА рдкреГрд╖реНрда рднреА рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреА рд╣реИрдВред рдПрдХ рдПрдВрдЯреА-рдбрд┐рдЯреЗрдХреНрд╢рди рдХреНрд▓рд╛рдЙрдб рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреГрд╖реНрда рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдирд╛ рд╡рд╣реА рдЬрдирд╕рдВрдЦреНрдпрд╛ рд╡рд╛рд▓рд╛ рдбреЛрдо рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬреЛ рдЬреИрд╡рд┐рдХ рдЯреНрд░реИрдлрд╝рд┐рдХ рджреЗрдЦрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдп рдиреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реИред

рдкреНрд░рд╢реНрди 4: рдореИрдВ рдХреИрд╕реЗ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ рдХрд┐ рдПрдХ рдкрдврд╝рд╛рдИ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреАрдордд рд╣реИ рдФрд░ рдПрдХ рдЪреБрдиреМрддреА рдкреГрд╖реНрда рдирд╣реАрдВ рд╣реИ?
рдпрд╣ рдЬрд╛рдБрдЪреЗрдВ рдХрд┐ рдореВрд▓реНрдп рдиреЛрдб рдореМрдЬреВрдж рд╣реИ рдФрд░ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдпрд╣ рдирд╣реАрдВ рдХрд┐ рдЕрдиреБрд░реЛрдз рдиреЗ рдПрдЪрдЯреАрдЯреАрдкреА 200 рд▓реМрдЯрд╛рдпрд╛ред рддреБрд▓рдирд╛ рд▓реЙрдЬрд┐рдХ рдПрдХ рдЕрдиреБрдкрд╕реНрдерд┐рдд рдпрд╛ рдЕрд╡реНрдпрд╛рдЦреНрдпрд╛рдпрд┐рдд рдореВрд▓реНрдп рдХреЛ None рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рдЕрд▓рд░реНрдЯ рдирд╣реАрдВ рджреЗрддрд╛, рдЗрд╕рд▓рд┐рдП рдХрднреА-рдХрднреА рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдВрддрд░рд╛рд▓ рд╕реЗ рдЧрд▓рдд рдЧрд┐рд░рд╛рд╡рдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЬрдм рдПрдХ рдореВрд▓реНрдп рд▓рдЧрд╛рддрд╛рд░ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд░реЗрдВрдбрд░ рдХрд┐рдП рдЧрдП рдбреЛрдо рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдВрдЪреЗрдВ рдФрд░ рдЪрдпрдирдХрд░реНрддрд╛ рдХреЛ рдХрд╕реЗрдВред

рдкреНрд░рд╢реНрди 5: рдЪреЗрдХ рдХрд┐рддрдиреА рдмрд╛рд░ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдпрд╣ рдХрд┐рддрдиреЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
рдПрдХ рджреИрдирд┐рдХ рдЪреЗрдХ рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреАрд▓ рд╡реЙрдЪ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ; рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛рддреНрдордХ рдирд┐рдЧрд░рд╛рдиреА рд╣рд░ рдШрдВрдЯреЗ рдЪрд▓ рд╕рдХрддреА рд╣реИред рдПрдХ рд╡реЙрдЪ рд▓рд┐рд╕реНрдЯ рдХреЗ рд▓рд┐рдП, рдПрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░рди рдХреЗ рднреАрддрд░ URLs рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд▓реВрдк рдХрд░реЗрдВ рдФрд░ рд╕рдорд╡рд░реНрддреАрддрд╛ рдХреЛ рд╕рдВрдпрдорд┐рдд рд░рдЦреЗрдВ - рд▓рдЧрднрдЧ рддреАрди рд╕рдорд╛рдирд╛рдВрддрд░ рд░реЗрдВрдбрд░ рдкреНрд░рддрд┐ рд╣реЛрд╕реНрдЯ рдПрдХ рд╕рдордЭрджрд╛рд░реА рдХреА рдЫрдд рд╣реИ - рддрд╛рдХрд┐ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ рдЕрдЪреНрдЫреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд░рд╣реЗред рдмрдбрд╝реЗ рдлреИрд▓рд╛ рдкрд░ рд╣реЛрд╕реНрдЯ рдХреЗ рдмреАрдЪ рд╢рд╛рд░реНрдж рдХрд░реЗрдВред

рдкреНрд░рд╢реНрди 6: рдХреНрдпрд╛ рдпрд╣ рдмрд┐рдирд╛ рдПрдХ рдПрдЖрдИ рдПрдЬреЗрдВрдЯ рдХреЗ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ?
рд╣рд╛рдБред рдЪрд░рдг 1-6 рдореЗрдВ рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдкрдиреЗ рдЖрдк рдЕрдВрдд рд╕реЗ рдЕрдВрдд рддрдХ рдЪрд▓рддреА рд╣реИ - рдХрдиреЗрдХреНрдЯ, рд░реЗрдВрдбрд░, рдирд┐рдХрд╛рд▓рдирд╛, рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛, рддреБрд▓рдирд╛ рдХрд░рдирд╛, рдЕрд▓рд░реНрдЯ рдХрд░рдирд╛, рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ред рдПрдХ рдПрдЖрдИ рдПрдЬреЗрдВрдЯ рд░реЗрдВрдбрд░ рдФрд░ рдЪрдпрдирдХрд░реНрддрд╛ рдЪрд░рдгреЛрдВ рдХреЛ рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдореЗрдВ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ; Playwright рдФрд░ рдПрдХ рд╢реЗрдбреНрдпреВрд▓рд░ рд╣реА рд▓реВрдк рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдкреНрд░рд╢реНрди 7: рдХреАрдордд рдПрдХ рд╕рд╛рдЗрдЯ рдХреЗ рдкреБрдирдГ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рдмрд╛рдж рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреА - рдХреНрдпрд╛ рдмрджрд▓рд╛?
рд╕рд╛рдЗрдЯ рдиреЗ рдЕрдкрдиреЗ рд╡рд░реНрдЧ рдирд╛рдореЛрдВ рдХреЛ рдШреБрдорд╛рдпрд╛ред рд░реЗрдВрдбрд░ рдХрд┐рдП рдЧрдП рдбреЛрдо рдХрд╛ рдлрд┐рд░ рд╕реЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВ рдФрд░ рдПрдХ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдЪрдпрдирдХрд░реНрддрд╛ (itemprop, data-testid, aria-label) рдкрд░ рдлрд┐рд░ рд╕реЗ рдПрдВрдХрд░ рдХрд░реЗрдВ рдмрдЬрд╛рдп рдПрдХ рд╣реИрд╢ рдХрд┐рдП рдЧрдП рд╡рд░реНрдЧ рдХреЗред рдореВрд▓реНрдп рдХреЛ рдирд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдорд╛рдиреЗрдВ рддрд╛рдХрд┐ рдкреБрдирдГ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрднреА рдЗрддрд┐рд╣рд╛рд╕ рд▓реЙрдЧ рдореЗрдВ рдЧрд▓рдд рд╕рдВрдЦреНрдпрд╛ рди рдбрд╛рд▓ рд╕рдХреЗред

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

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

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