IKEA сбор новых и редактирование категорий
188
Parser_NEXT/out/logs/run.log
Normal file
@ -0,0 +1,188 @@
|
||||
2025-08-26 11:11:49,973 INFO Category start: category-bathroomaccessories — https://www.next.pl/en/shop/home/bathroom/bathroom-accessories/f/category-bathroomaccessories
|
||||
2025-08-26 11:11:52,723 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081152_722993_after_goto.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081152_722993_after_goto.png
|
||||
2025-08-26 11:11:53,293 INFO [dump_debug] saved OK: 20250826_081152_722993_after_goto.html, 20250826_081152_722993_after_goto.png
|
||||
2025-08-26 11:11:53,348 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081153_347996_after_cookies.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081153_347996_after_cookies.png
|
||||
2025-08-26 11:11:53,659 INFO [dump_debug] saved OK: 20250826_081153_347996_after_cookies.html, 20250826_081153_347996_after_cookies.png
|
||||
2025-08-26 11:11:53,694 INFO [after_accept] scripts: 12, window.ps: False
|
||||
2025-08-26 11:11:54,671 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081154_671358_after_warmup.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081154_671358_after_warmup.png
|
||||
2025-08-26 11:11:55,369 INFO [dump_debug] saved OK: 20250826_081154_671358_after_warmup.html, 20250826_081154_671358_after_warmup.png
|
||||
2025-08-26 11:11:55,385 INFO [after_warmup] scripts: 48, window.ps: False
|
||||
2025-08-26 11:11:55,408 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081155_408793_after_scripts_present.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081155_408793_after_scripts_present.png
|
||||
2025-08-26 11:11:56,004 INFO [dump_debug] saved OK: 20250826_081155_408793_after_scripts_present.html, 20250826_081155_408793_after_scripts_present.png
|
||||
2025-08-26 11:12:01,009 INFO window.ssrClientSettings not ready (non-fatal).
|
||||
2025-08-26 11:12:01,010 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081201_009973_after_window_check.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081201_009973_after_window_check.png
|
||||
2025-08-26 11:12:01,491 INFO [dump_debug] saved OK: 20250826_081201_009973_after_window_check.html, 20250826_081201_009973_after_window_check.png
|
||||
2025-08-26 11:12:01,531 INFO Total from header: 67
|
||||
2025-08-26 11:12:02,478 INFO Reached target: seen 67/67 (i=4)
|
||||
2025-08-26 11:12:02,479 INFO Final seen items: 60 (target=67, cap=2500)
|
||||
2025-08-26 11:12:02,576 INFO SSR(scripts) summaries: 0
|
||||
2025-08-26 11:12:02,600 INFO DOM cards parsed: 67
|
||||
2025-08-26 11:12:02,606 INFO Total collected (SSR+DOM): 67
|
||||
2025-08-26 11:15:06,490 INFO ✔ category-bathroomaccessories: 67 товаров → records_folder/next_dump_20250826_111506.xlsx
|
||||
2025-08-26 11:15:06,490 INFO Category start: category-toiletrollholders — https://www.next.pl/en/shop/home/bathroom/bathroom-accessories/f/category-toiletrollholders
|
||||
2025-08-26 11:15:07,881 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081507_881071_after_goto.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081507_881071_after_goto.png
|
||||
2025-08-26 11:15:08,345 INFO [dump_debug] saved OK: 20250826_081507_881071_after_goto.html, 20250826_081507_881071_after_goto.png
|
||||
2025-08-26 11:15:08,856 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081508_856122_after_cookies.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081508_856122_after_cookies.png
|
||||
2025-08-26 11:15:09,233 INFO [dump_debug] saved OK: 20250826_081508_856122_after_cookies.html, 20250826_081508_856122_after_cookies.png
|
||||
2025-08-26 11:15:09,465 INFO [after_accept] scripts: 12, window.ps: False
|
||||
2025-08-26 11:15:10,796 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081510_796457_after_warmup.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081510_796457_after_warmup.png
|
||||
2025-08-26 11:15:11,814 INFO [dump_debug] saved OK: 20250826_081510_796457_after_warmup.html, 20250826_081510_796457_after_warmup.png
|
||||
2025-08-26 11:15:11,843 INFO [after_warmup] scripts: 48, window.ps: False
|
||||
2025-08-26 11:15:11,858 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081511_857930_after_scripts_present.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081511_857930_after_scripts_present.png
|
||||
2025-08-26 11:15:12,469 INFO [dump_debug] saved OK: 20250826_081511_857930_after_scripts_present.html, 20250826_081511_857930_after_scripts_present.png
|
||||
2025-08-26 11:15:17,473 INFO window.ssrClientSettings not ready (non-fatal).
|
||||
2025-08-26 11:15:17,474 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081517_474237_after_window_check.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081517_474237_after_window_check.png
|
||||
2025-08-26 11:15:18,061 INFO [dump_debug] saved OK: 20250826_081517_474237_after_window_check.html, 20250826_081517_474237_after_window_check.png
|
||||
2025-08-26 11:15:18,115 INFO Total from header: 62
|
||||
2025-08-26 11:15:18,816 INFO Reached target: seen 62/62 (i=2)
|
||||
2025-08-26 11:15:18,817 INFO Final seen items: 60 (target=62, cap=2500)
|
||||
2025-08-26 11:15:18,999 INFO SSR(scripts) summaries: 0
|
||||
2025-08-26 11:15:19,073 INFO DOM cards parsed: 62
|
||||
2025-08-26 11:15:19,078 INFO Total collected (SSR+DOM): 62
|
||||
2025-08-26 11:18:22,782 INFO ✔ category-toiletrollholders: 62 товаров → records_folder/next_dump_20250826_111822.xlsx
|
||||
2025-08-26 11:18:22,782 INFO Category start: category-ornaments — https://www.next.pl/en/shop/home/bathroom/bathroom-accessories/f/category-ornaments
|
||||
2025-08-26 11:18:24,382 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081824_381903_after_goto.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081824_381903_after_goto.png
|
||||
2025-08-26 11:18:24,713 INFO [dump_debug] saved OK: 20250826_081824_381903_after_goto.html, 20250826_081824_381903_after_goto.png
|
||||
2025-08-26 11:18:25,203 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081825_203312_after_cookies.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081825_203312_after_cookies.png
|
||||
2025-08-26 11:18:25,732 INFO [dump_debug] saved OK: 20250826_081825_203312_after_cookies.html, 20250826_081825_203312_after_cookies.png
|
||||
2025-08-26 11:18:25,930 INFO [after_accept] scripts: 12, window.ps: False
|
||||
2025-08-26 11:18:27,095 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081827_095356_after_warmup.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081827_095356_after_warmup.png
|
||||
2025-08-26 11:18:28,114 INFO [dump_debug] saved OK: 20250826_081827_095356_after_warmup.html, 20250826_081827_095356_after_warmup.png
|
||||
2025-08-26 11:18:28,173 INFO [after_warmup] scripts: 36, window.ps: False
|
||||
2025-08-26 11:18:28,190 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081828_189913_after_scripts_present.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081828_189913_after_scripts_present.png
|
||||
2025-08-26 11:18:28,664 INFO [dump_debug] saved OK: 20250826_081828_189913_after_scripts_present.html, 20250826_081828_189913_after_scripts_present.png
|
||||
2025-08-26 11:18:33,671 INFO window.ssrClientSettings not ready (non-fatal).
|
||||
2025-08-26 11:18:33,672 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081833_672277_after_window_check.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_081833_672277_after_window_check.png
|
||||
2025-08-26 11:18:34,110 INFO [dump_debug] saved OK: 20250826_081833_672277_after_window_check.html, 20250826_081833_672277_after_window_check.png
|
||||
2025-08-26 11:18:34,122 INFO Total from header: 58
|
||||
2025-08-26 11:18:35,306 INFO Reached target: seen 58/58 (i=4)
|
||||
2025-08-26 11:18:35,306 INFO Final seen items: 48 (target=58, cap=2500)
|
||||
2025-08-26 11:18:35,363 INFO SSR(scripts) summaries: 0
|
||||
2025-08-26 11:18:35,387 INFO DOM cards parsed: 58
|
||||
2025-08-26 11:18:35,391 INFO Total collected (SSR+DOM): 58
|
||||
2025-08-26 11:21:21,373 INFO ✔ category-ornaments: 58 товаров → records_folder/next_dump_20250826_112121.xlsx
|
||||
2025-08-26 11:21:21,374 INFO Category start: category-toiletbrushes — https://www.next.pl/en/shop/home/bathroom/bathroom-accessories/f/category-toiletbrushes
|
||||
2025-08-26 11:21:23,733 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082123_732422_after_goto.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082123_732422_after_goto.png
|
||||
2025-08-26 11:21:24,536 INFO [dump_debug] saved OK: 20250826_082123_732422_after_goto.html, 20250826_082123_732422_after_goto.png
|
||||
2025-08-26 11:21:24,751 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082124_751547_after_cookies.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082124_751547_after_cookies.png
|
||||
2025-08-26 11:21:25,131 INFO [dump_debug] saved OK: 20250826_082124_751547_after_cookies.html, 20250826_082124_751547_after_cookies.png
|
||||
2025-08-26 11:21:25,142 INFO [after_accept] scripts: 12, window.ps: False
|
||||
2025-08-26 11:21:26,176 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082126_175634_after_warmup.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082126_175634_after_warmup.png
|
||||
2025-08-26 11:21:27,002 INFO [dump_debug] saved OK: 20250826_082126_175634_after_warmup.html, 20250826_082126_175634_after_warmup.png
|
||||
2025-08-26 11:21:27,043 INFO [after_warmup] scripts: 36, window.ps: False
|
||||
2025-08-26 11:21:27,066 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082127_066044_after_scripts_present.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082127_066044_after_scripts_present.png
|
||||
2025-08-26 11:21:27,598 INFO [dump_debug] saved OK: 20250826_082127_066044_after_scripts_present.html, 20250826_082127_066044_after_scripts_present.png
|
||||
2025-08-26 11:21:32,603 INFO window.ssrClientSettings not ready (non-fatal).
|
||||
2025-08-26 11:21:32,604 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082132_603713_after_window_check.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082132_603713_after_window_check.png
|
||||
2025-08-26 11:21:33,106 INFO [dump_debug] saved OK: 20250826_082132_603713_after_window_check.html, 20250826_082132_603713_after_window_check.png
|
||||
2025-08-26 11:21:33,156 INFO Total from header: 36
|
||||
2025-08-26 11:21:33,331 INFO Reached target: seen 36/36 (i=0)
|
||||
2025-08-26 11:21:33,331 INFO Final seen items: 0 (target=36, cap=2500)
|
||||
2025-08-26 11:21:33,365 INFO SSR(scripts) summaries: 0
|
||||
2025-08-26 11:21:33,379 INFO DOM cards parsed: 36
|
||||
2025-08-26 11:21:33,382 INFO Total collected (SSR+DOM): 36
|
||||
2025-08-26 11:23:30,037 INFO ✔ category-toiletbrushes: 36 товаров → records_folder/next_dump_20250826_112330.xlsx
|
||||
2025-08-26 11:23:30,037 INFO Category start: category-towelrails — https://www.next.pl/en/shop/home/bathroom/bathroom-accessories/f/category-towelrails
|
||||
2025-08-26 11:23:32,219 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082332_219443_after_goto.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082332_219443_after_goto.png
|
||||
2025-08-26 11:23:33,201 INFO [dump_debug] saved OK: 20250826_082332_219443_after_goto.html, 20250826_082332_219443_after_goto.png
|
||||
2025-08-26 11:23:33,271 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082333_270928_after_cookies.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082333_270928_after_cookies.png
|
||||
2025-08-26 11:23:33,512 INFO [dump_debug] saved OK: 20250826_082333_270928_after_cookies.html, 20250826_082333_270928_after_cookies.png
|
||||
2025-08-26 11:23:33,631 INFO [after_accept] scripts: 12, window.ps: False
|
||||
2025-08-26 11:23:34,892 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082334_892715_after_warmup.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082334_892715_after_warmup.png
|
||||
2025-08-26 11:23:35,589 INFO [dump_debug] saved OK: 20250826_082334_892715_after_warmup.html, 20250826_082334_892715_after_warmup.png
|
||||
2025-08-26 11:23:35,601 INFO [after_warmup] scripts: 34, window.ps: False
|
||||
2025-08-26 11:23:35,628 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082335_628381_after_scripts_present.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082335_628381_after_scripts_present.png
|
||||
2025-08-26 11:23:36,101 INFO [dump_debug] saved OK: 20250826_082335_628381_after_scripts_present.html, 20250826_082335_628381_after_scripts_present.png
|
||||
2025-08-26 11:23:41,106 INFO window.ssrClientSettings not ready (non-fatal).
|
||||
2025-08-26 11:23:41,107 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082341_107237_after_window_check.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082341_107237_after_window_check.png
|
||||
2025-08-26 11:23:41,502 INFO [dump_debug] saved OK: 20250826_082341_107237_after_window_check.html, 20250826_082341_107237_after_window_check.png
|
||||
2025-08-26 11:23:41,514 INFO Total from header: 34
|
||||
2025-08-26 11:23:41,698 INFO Reached target: seen 34/34 (i=0)
|
||||
2025-08-26 11:23:41,698 INFO Final seen items: 0 (target=34, cap=2500)
|
||||
2025-08-26 11:23:41,725 INFO SSR(scripts) summaries: 0
|
||||
2025-08-26 11:23:41,739 INFO DOM cards parsed: 34
|
||||
2025-08-26 11:23:41,742 INFO Total collected (SSR+DOM): 34
|
||||
2025-08-26 11:25:30,375 INFO ✔ category-towelrails: 34 товаров → records_folder/next_dump_20250826_112530.xlsx
|
||||
2025-08-26 11:25:30,375 INFO Category start: category-showercaddy — https://www.next.pl/en/shop/home/bathroom/bathroom-accessories/f/category-showercaddy
|
||||
2025-08-26 11:25:33,205 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082533_205048_after_goto.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082533_205048_after_goto.png
|
||||
2025-08-26 11:25:33,909 INFO [dump_debug] saved OK: 20250826_082533_205048_after_goto.html, 20250826_082533_205048_after_goto.png
|
||||
2025-08-26 11:25:34,090 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082534_088587_after_cookies.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082534_088587_after_cookies.png
|
||||
2025-08-26 11:25:34,352 INFO [dump_debug] saved OK: 20250826_082534_088587_after_cookies.html, 20250826_082534_088587_after_cookies.png
|
||||
2025-08-26 11:25:34,368 INFO [after_accept] scripts: 12, window.ps: False
|
||||
2025-08-26 11:25:35,590 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082535_590259_after_warmup.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082535_590259_after_warmup.png
|
||||
2025-08-26 11:25:36,117 INFO [dump_debug] saved OK: 20250826_082535_590259_after_warmup.html, 20250826_082535_590259_after_warmup.png
|
||||
2025-08-26 11:25:36,143 INFO [after_warmup] scripts: 32, window.ps: False
|
||||
2025-08-26 11:25:36,154 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082536_154156_after_scripts_present.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082536_154156_after_scripts_present.png
|
||||
2025-08-26 11:25:36,567 INFO [dump_debug] saved OK: 20250826_082536_154156_after_scripts_present.html, 20250826_082536_154156_after_scripts_present.png
|
||||
2025-08-26 11:25:41,573 INFO window.ssrClientSettings not ready (non-fatal).
|
||||
2025-08-26 11:25:41,573 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082541_573556_after_window_check.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082541_573556_after_window_check.png
|
||||
2025-08-26 11:25:41,985 INFO [dump_debug] saved OK: 20250826_082541_573556_after_window_check.html, 20250826_082541_573556_after_window_check.png
|
||||
2025-08-26 11:25:41,996 INFO Total from header: 32
|
||||
2025-08-26 11:25:42,200 INFO Reached target: seen 32/32 (i=0)
|
||||
2025-08-26 11:25:42,200 INFO Final seen items: 0 (target=32, cap=2500)
|
||||
2025-08-26 11:25:42,252 INFO SSR(scripts) summaries: 0
|
||||
2025-08-26 11:25:42,272 INFO DOM cards parsed: 32
|
||||
2025-08-26 11:25:42,276 INFO Total collected (SSR+DOM): 32
|
||||
2025-08-26 11:27:28,017 INFO ✔ category-showercaddy: 32 товаров → records_folder/next_dump_20250826_112727.xlsx
|
||||
2025-08-26 11:27:28,017 INFO Category start: category-soapdispensers — https://www.next.pl/en/shop/home/bathroom/bathroom-accessories/f/category-soapdispensers
|
||||
2025-08-26 11:27:30,102 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082730_102142_after_goto.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082730_102142_after_goto.png
|
||||
2025-08-26 11:27:30,426 INFO [dump_debug] saved OK: 20250826_082730_102142_after_goto.html, 20250826_082730_102142_after_goto.png
|
||||
2025-08-26 11:27:30,916 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082730_916653_after_cookies.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082730_916653_after_cookies.png
|
||||
2025-08-26 11:27:31,357 INFO [dump_debug] saved OK: 20250826_082730_916653_after_cookies.html, 20250826_082730_916653_after_cookies.png
|
||||
2025-08-26 11:27:31,372 INFO [after_accept] scripts: 12, window.ps: False
|
||||
2025-08-26 11:27:32,426 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082732_426065_after_warmup.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082732_426065_after_warmup.png
|
||||
2025-08-26 11:27:33,108 INFO [dump_debug] saved OK: 20250826_082732_426065_after_warmup.html, 20250826_082732_426065_after_warmup.png
|
||||
2025-08-26 11:27:33,153 INFO [after_warmup] scripts: 31, window.ps: False
|
||||
2025-08-26 11:27:33,439 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082733_439141_after_scripts_present.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082733_439141_after_scripts_present.png
|
||||
2025-08-26 11:27:33,869 INFO [dump_debug] saved OK: 20250826_082733_439141_after_scripts_present.html, 20250826_082733_439141_after_scripts_present.png
|
||||
2025-08-26 11:27:38,875 INFO window.ssrClientSettings not ready (non-fatal).
|
||||
2025-08-26 11:27:38,876 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082738_876086_after_window_check.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082738_876086_after_window_check.png
|
||||
2025-08-26 11:27:39,228 INFO [dump_debug] saved OK: 20250826_082738_876086_after_window_check.html, 20250826_082738_876086_after_window_check.png
|
||||
2025-08-26 11:27:39,241 INFO Total from header: 31
|
||||
2025-08-26 11:27:39,440 INFO Reached target: seen 31/31 (i=0)
|
||||
2025-08-26 11:27:39,441 INFO Final seen items: 0 (target=31, cap=2500)
|
||||
2025-08-26 11:27:39,466 INFO SSR(scripts) summaries: 0
|
||||
2025-08-26 11:27:39,480 INFO DOM cards parsed: 31
|
||||
2025-08-26 11:27:39,482 INFO Total collected (SSR+DOM): 31
|
||||
2025-08-26 11:29:53,592 INFO ✔ category-soapdispensers: 31 товаров → records_folder/next_dump_20250826_112953.xlsx
|
||||
2025-08-26 11:29:53,592 INFO Category start: category-toothbrushtidy — https://www.next.pl/en/shop/home/bathroom/bathroom-accessories/f/category-toothbrushtidy
|
||||
2025-08-26 11:29:56,736 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082956_735948_after_goto.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082956_735948_after_goto.png
|
||||
2025-08-26 11:29:57,112 INFO [dump_debug] saved OK: 20250826_082956_735948_after_goto.html, 20250826_082956_735948_after_goto.png
|
||||
2025-08-26 11:29:57,163 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082957_163134_after_cookies.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082957_163134_after_cookies.png
|
||||
2025-08-26 11:29:57,363 INFO [dump_debug] saved OK: 20250826_082957_163134_after_cookies.html, 20250826_082957_163134_after_cookies.png
|
||||
2025-08-26 11:29:57,372 INFO [after_accept] scripts: 12, window.ps: False
|
||||
2025-08-26 11:29:58,440 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082958_440510_after_warmup.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082958_440510_after_warmup.png
|
||||
2025-08-26 11:29:59,124 INFO [dump_debug] saved OK: 20250826_082958_440510_after_warmup.html, 20250826_082958_440510_after_warmup.png
|
||||
2025-08-26 11:29:59,169 INFO [after_warmup] scripts: 32, window.ps: False
|
||||
2025-08-26 11:29:59,216 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082959_216457_after_scripts_present.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_082959_216457_after_scripts_present.png
|
||||
2025-08-26 11:29:59,686 INFO [dump_debug] saved OK: 20250826_082959_216457_after_scripts_present.html, 20250826_082959_216457_after_scripts_present.png
|
||||
2025-08-26 11:30:04,692 INFO window.ssrClientSettings not ready (non-fatal).
|
||||
2025-08-26 11:30:04,693 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_083004_693216_after_window_check.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_083004_693216_after_window_check.png
|
||||
2025-08-26 11:30:05,503 INFO [dump_debug] saved OK: 20250826_083004_693216_after_window_check.html, 20250826_083004_693216_after_window_check.png
|
||||
2025-08-26 11:30:05,525 INFO Total from header: 32
|
||||
2025-08-26 11:30:05,684 INFO Reached target: seen 32/32 (i=0)
|
||||
2025-08-26 11:30:05,685 INFO Final seen items: 0 (target=32, cap=2500)
|
||||
2025-08-26 11:30:05,723 INFO SSR(scripts) summaries: 0
|
||||
2025-08-26 11:30:05,743 INFO DOM cards parsed: 32
|
||||
2025-08-26 11:30:05,747 INFO Total collected (SSR+DOM): 32
|
||||
2025-08-26 11:32:40,930 INFO ✔ category-toothbrushtidy: 32 товаров → records_folder/next_dump_20250826_113240.xlsx
|
||||
2025-08-26 11:32:40,930 INFO Category start: category-mirrors — https://www.next.pl/en/shop/home/bathroom/bathroom-accessories/f/category-mirrors
|
||||
2025-08-26 11:32:44,062 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_083244_061879_after_goto.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_083244_061879_after_goto.png
|
||||
2025-08-26 11:32:44,453 INFO [dump_debug] saved OK: 20250826_083244_061879_after_goto.html, 20250826_083244_061879_after_goto.png
|
||||
2025-08-26 11:32:44,479 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_083244_479324_after_cookies.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_083244_479324_after_cookies.png
|
||||
2025-08-26 11:32:44,698 INFO [dump_debug] saved OK: 20250826_083244_479324_after_cookies.html, 20250826_083244_479324_after_cookies.png
|
||||
2025-08-26 11:32:44,724 INFO [after_accept] scripts: 12, window.ps: False
|
||||
2025-08-26 11:32:45,978 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_083245_977680_after_warmup.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_083245_977680_after_warmup.png
|
||||
2025-08-26 11:32:46,580 INFO [dump_debug] saved OK: 20250826_083245_977680_after_warmup.html, 20250826_083245_977680_after_warmup.png
|
||||
2025-08-26 11:32:46,611 INFO [after_warmup] scripts: 27, window.ps: False
|
||||
2025-08-26 11:32:46,649 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_083246_649499_after_scripts_present.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_083246_649499_after_scripts_present.png
|
||||
2025-08-26 11:32:47,032 INFO [dump_debug] saved OK: 20250826_083246_649499_after_scripts_present.html, 20250826_083246_649499_after_scripts_present.png
|
||||
2025-08-26 11:32:52,035 INFO window.ssrClientSettings not ready (non-fatal).
|
||||
2025-08-26 11:32:52,036 INFO [dump_debug] CWD=/Users/valis/MacOS_Parsers/Parser_NEXT → html=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_083252_036049_after_window_check.html png=/Users/valis/MacOS_Parsers/Parser_NEXT/out/raw_html/20250826_083252_036049_after_window_check.png
|
||||
2025-08-26 11:32:52,824 INFO [dump_debug] saved OK: 20250826_083252_036049_after_window_check.html, 20250826_083252_036049_after_window_check.png
|
||||
2025-08-26 11:32:52,845 INFO Total from header: 27
|
||||
2025-08-26 11:32:53,022 INFO Reached target: seen 27/27 (i=0)
|
||||
2025-08-26 11:32:53,023 INFO Final seen items: 0 (target=27, cap=2500)
|
||||
2025-08-26 11:32:53,076 INFO SSR(scripts) summaries: 0
|
||||
2025-08-26 11:32:53,109 INFO DOM cards parsed: 27
|
||||
2025-08-26 11:32:53,111 INFO Total collected (SSR+DOM): 27
|
||||
412
Parser_NEXT/out/raw_html/20250826_081152_722993_after_goto.html
Normal file
BIN
Parser_NEXT/out/raw_html/20250826_081152_722993_after_goto.png
Normal file
|
After Width: | Height: | Size: 165 KiB |
|
After Width: | Height: | Size: 165 KiB |
1535
Parser_NEXT/out/raw_html/20250826_081154_671358_after_warmup.html
Normal file
BIN
Parser_NEXT/out/raw_html/20250826_081154_671358_after_warmup.png
Normal file
|
After Width: | Height: | Size: 386 KiB |
|
After Width: | Height: | Size: 513 KiB |
|
After Width: | Height: | Size: 513 KiB |
425
Parser_NEXT/out/raw_html/20250826_081507_881071_after_goto.html
Normal file
BIN
Parser_NEXT/out/raw_html/20250826_081507_881071_after_goto.png
Normal file
|
After Width: | Height: | Size: 162 KiB |
1500
Parser_NEXT/out/raw_html/20250826_081508_856122_after_cookies.html
Normal file
|
After Width: | Height: | Size: 162 KiB |
1583
Parser_NEXT/out/raw_html/20250826_081510_796457_after_warmup.html
Normal file
BIN
Parser_NEXT/out/raw_html/20250826_081510_796457_after_warmup.png
Normal file
|
After Width: | Height: | Size: 524 KiB |
|
After Width: | Height: | Size: 525 KiB |
|
After Width: | Height: | Size: 525 KiB |
427
Parser_NEXT/out/raw_html/20250826_081824_381903_after_goto.html
Normal file
BIN
Parser_NEXT/out/raw_html/20250826_081824_381903_after_goto.png
Normal file
|
After Width: | Height: | Size: 169 KiB |
1500
Parser_NEXT/out/raw_html/20250826_081825_203312_after_cookies.html
Normal file
|
After Width: | Height: | Size: 169 KiB |
1535
Parser_NEXT/out/raw_html/20250826_081827_095356_after_warmup.html
Normal file
BIN
Parser_NEXT/out/raw_html/20250826_081827_095356_after_warmup.png
Normal file
|
After Width: | Height: | Size: 317 KiB |
|
After Width: | Height: | Size: 410 KiB |
|
After Width: | Height: | Size: 410 KiB |
427
Parser_NEXT/out/raw_html/20250826_082123_732422_after_goto.html
Normal file
BIN
Parser_NEXT/out/raw_html/20250826_082123_732422_after_goto.png
Normal file
|
After Width: | Height: | Size: 164 KiB |
1500
Parser_NEXT/out/raw_html/20250826_082124_751547_after_cookies.html
Normal file
|
After Width: | Height: | Size: 164 KiB |
1548
Parser_NEXT/out/raw_html/20250826_082126_175634_after_warmup.html
Normal file
BIN
Parser_NEXT/out/raw_html/20250826_082126_175634_after_warmup.png
Normal file
|
After Width: | Height: | Size: 383 KiB |
|
After Width: | Height: | Size: 382 KiB |
|
After Width: | Height: | Size: 382 KiB |
456
Parser_NEXT/out/raw_html/20250826_082332_219443_after_goto.html
Normal file
BIN
Parser_NEXT/out/raw_html/20250826_082332_219443_after_goto.png
Normal file
|
After Width: | Height: | Size: 160 KiB |
1500
Parser_NEXT/out/raw_html/20250826_082333_270928_after_cookies.html
Normal file
|
After Width: | Height: | Size: 160 KiB |
1554
Parser_NEXT/out/raw_html/20250826_082334_892715_after_warmup.html
Normal file
BIN
Parser_NEXT/out/raw_html/20250826_082334_892715_after_warmup.png
Normal file
|
After Width: | Height: | Size: 394 KiB |
|
After Width: | Height: | Size: 394 KiB |
|
After Width: | Height: | Size: 394 KiB |
1497
Parser_NEXT/out/raw_html/20250826_082533_205048_after_goto.html
Normal file
BIN
Parser_NEXT/out/raw_html/20250826_082533_205048_after_goto.png
Normal file
|
After Width: | Height: | Size: 166 KiB |
1500
Parser_NEXT/out/raw_html/20250826_082534_088587_after_cookies.html
Normal file
|
After Width: | Height: | Size: 166 KiB |
1535
Parser_NEXT/out/raw_html/20250826_082535_590259_after_warmup.html
Normal file
BIN
Parser_NEXT/out/raw_html/20250826_082535_590259_after_warmup.png
Normal file
|
After Width: | Height: | Size: 314 KiB |
|
After Width: | Height: | Size: 372 KiB |
|
After Width: | Height: | Size: 372 KiB |
423
Parser_NEXT/out/raw_html/20250826_082730_102142_after_goto.html
Normal file
BIN
Parser_NEXT/out/raw_html/20250826_082730_102142_after_goto.png
Normal file
|
After Width: | Height: | Size: 172 KiB |
1496
Parser_NEXT/out/raw_html/20250826_082730_916653_after_cookies.html
Normal file
|
After Width: | Height: | Size: 173 KiB |
1530
Parser_NEXT/out/raw_html/20250826_082732_426065_after_warmup.html
Normal file
BIN
Parser_NEXT/out/raw_html/20250826_082732_426065_after_warmup.png
Normal file
|
After Width: | Height: | Size: 374 KiB |
|
After Width: | Height: | Size: 374 KiB |
|
After Width: | Height: | Size: 374 KiB |
1500
Parser_NEXT/out/raw_html/20250826_082956_735948_after_goto.html
Normal file
BIN
Parser_NEXT/out/raw_html/20250826_082956_735948_after_goto.png
Normal file
|
After Width: | Height: | Size: 169 KiB |
1500
Parser_NEXT/out/raw_html/20250826_082957_163134_after_cookies.html
Normal file
|
After Width: | Height: | Size: 169 KiB |
1534
Parser_NEXT/out/raw_html/20250826_082958_440510_after_warmup.html
Normal file
BIN
Parser_NEXT/out/raw_html/20250826_082958_440510_after_warmup.png
Normal file
|
After Width: | Height: | Size: 367 KiB |
|
After Width: | Height: | Size: 367 KiB |
|
After Width: | Height: | Size: 349 KiB |
1500
Parser_NEXT/out/raw_html/20250826_083244_061879_after_goto.html
Normal file
BIN
Parser_NEXT/out/raw_html/20250826_083244_061879_after_goto.png
Normal file
|
After Width: | Height: | Size: 176 KiB |
1500
Parser_NEXT/out/raw_html/20250826_083244_479324_after_cookies.html
Normal file
|
After Width: | Height: | Size: 176 KiB |
1535
Parser_NEXT/out/raw_html/20250826_083245_977680_after_warmup.html
Normal file
BIN
Parser_NEXT/out/raw_html/20250826_083245_977680_after_warmup.png
Normal file
|
After Width: | Height: | Size: 331 KiB |
|
After Width: | Height: | Size: 332 KiB |
|
After Width: | Height: | Size: 332 KiB |
@ -24,6 +24,49 @@ def log(msg: str):
|
||||
def is_temp_or_hidden(name: str) -> bool:
|
||||
return name.startswith('~$') or name.startswith('.')
|
||||
|
||||
def build_ozonart(df: pd.DataFrame) -> pd.DataFrame:
|
||||
"""
|
||||
Создаёт/перезаписывает колонку OZONart по правилу:
|
||||
- если оба значения (Артикул, PartNumber) непустые -> 'Артикул-PartNumber'
|
||||
- иначе -> ''
|
||||
Под "пустым" понимаем NaN/None/пустая строка/строка из пробелов.
|
||||
"""
|
||||
if 'Артикул' not in df.columns or 'PartNumber' not in df.columns:
|
||||
# Если вдруг где-то нет нужных колонок — оставим пустую OZONart и залогируем
|
||||
if 'OZONart' not in df.columns:
|
||||
df['OZONart'] = ''
|
||||
log('ПРЕДУПРЕЖДЕНИЕ: Отсутствует колонка "Артикул" или "PartNumber" — OZONart заполнен пустыми значениями.')
|
||||
return df
|
||||
|
||||
art = df['Артикул']
|
||||
part = df['PartNumber']
|
||||
|
||||
# Признак непустоты: не NaN и не пустая строка после strip()
|
||||
art_nonempty = art.notna() & art.astype(str).str.strip().ne('')
|
||||
part_nonempty = part.notna() & part.astype(str).str.strip().ne('')
|
||||
mask = art_nonempty & part_nonempty
|
||||
|
||||
# По умолчанию — пустые строки
|
||||
ozon = pd.Series([''] * len(df), index=df.index, dtype=object)
|
||||
# Там, где оба непустые — склейка
|
||||
ozon.loc[mask] = art.loc[mask].astype(str).str.strip() + '-' + part.loc[mask].astype(str).str.strip()
|
||||
|
||||
df['OZONart'] = ozon
|
||||
|
||||
# Попробуем разместить OZONart сразу после PartNumber
|
||||
try:
|
||||
cols = list(df.columns)
|
||||
if 'OZONart' in cols and 'PartNumber' in cols:
|
||||
cols.remove('OZONart')
|
||||
idx = cols.index('PartNumber') + 1
|
||||
cols.insert(idx, 'OZONart')
|
||||
df = df.reindex(columns=cols)
|
||||
except Exception:
|
||||
# Не критично — просто оставим как есть
|
||||
pass
|
||||
|
||||
return df
|
||||
|
||||
# === Пути ===
|
||||
script_dir = get_script_dir()
|
||||
folder_path = os.path.join(script_dir, 'Files-todo')
|
||||
@ -77,13 +120,17 @@ def main():
|
||||
log(f'ПРЕДУПРЕЖДЕНИЕ: Пустой файл — пропуск: {fname}')
|
||||
continue
|
||||
|
||||
# Добавляем колонку OZONart согласно правилу
|
||||
df = build_ozonart(df)
|
||||
|
||||
# Зафиксируем исходный порядок колонок первого удачного файла
|
||||
if not all_columns:
|
||||
for c in df.columns:
|
||||
if c not in seen_cols:
|
||||
all_columns.append(c)
|
||||
seen_cols.add(c)
|
||||
|
||||
# Добавляем источники
|
||||
# Добавляем служебные источники
|
||||
stem, _ = os.path.splitext(fname)
|
||||
df['SourceFile'] = fname
|
||||
df['SourceFileUrl'] = BASE_URL + stem
|
||||
@ -102,11 +149,20 @@ def main():
|
||||
|
||||
combined = pd.concat(dfs, ignore_index=True)
|
||||
|
||||
# порядок колонок: сначала из первого удачного файла, потом прочие (кроме служебных) по алфавиту,
|
||||
# затем служебные SourceFile и SourceFileUrl в конце
|
||||
# Порядок колонок:
|
||||
# 1) как в первом удачном файле,
|
||||
# 2) затем прочие (кроме служебных) по алфавиту,
|
||||
# 3) затем служебные SourceFile и SourceFileUrl в конце.
|
||||
extra_cols = [c for c in combined.columns if c not in all_columns and c not in ('SourceFile', 'SourceFileUrl')]
|
||||
extra_cols.sort()
|
||||
final_cols = all_columns + extra_cols
|
||||
|
||||
# Гарантируем размещение OZONart сразу после PartNumber, если они есть
|
||||
if 'OZONart' in final_cols and 'PartNumber' in final_cols:
|
||||
final_cols.remove('OZONart')
|
||||
pn_idx = final_cols.index('PartNumber')
|
||||
final_cols.insert(pn_idx + 1, 'OZONart')
|
||||
|
||||
if 'SourceFile' not in final_cols:
|
||||
final_cols.append('SourceFile')
|
||||
if 'SourceFileUrl' not in final_cols:
|
||||
|
||||
@ -1 +1 @@
|
||||
"Bambus", "szkło"
|
||||
"Woda", "szkło", "Szkliwo", "kamionka",
|
||||
@ -1,5 +1,312 @@
|
||||
|
||||
https://www.ikea.com/pl/pl/cat/regaly-na-ksiazki-10382/
|
||||
https://www.ikea.com/pl/pl/cat/kompletne-polki-scienne-20660/
|
||||
https://www.ikea.com/pl/pl/cat/polki-20658/
|
||||
https://www.ikea.com/pl/pl/cat/polki-na-obrazy-i-zdjecia-16305/
|
||||
https://www.ikea.com/pl/pl/cat/nogi-besta-55032/
|
||||
https://www.ikea.com/pl/pl/cat/galki-i-uchwyty-16298/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-platsa-37898/
|
||||
https://www.ikea.com/pl/pl/cat/nogi-szyny-akcesoria-eket-59286/
|
||||
https://www.ikea.com/pl/pl/cat/galki-uchwyty-akcesoria-smastad-49763/
|
||||
https://www.ikea.com/pl/pl/cat/pudelka-i-pokrywki-trofast-700558/
|
||||
https://www.ikea.com/pl/pl/cat/dodatkowe-przechowywanie-10797/
|
||||
https://www.ikea.com/pl/pl/cat/wyspy-kuchenne-wozki-i-barki-10471/
|
||||
https://www.ikea.com/pl/pl/cat/wozki-lazienkowe-20858/
|
||||
https://www.ikea.com/pl/pl/cat/pudelka-i-polki-na-zabawki-700560/
|
||||
https://www.ikea.com/pl/pl/cat/kontenerki-do-domu-47081/
|
||||
https://www.ikea.com/pl/pl/cat/szafki-i-polki-na-buty-10456/
|
||||
https://www.ikea.com/pl/pl/product-guides/znajdz-rozwiazanie-do-sortowania-odpadow-dopasowane-do-twoich-potrzeb-pub9194d4a0/
|
||||
https://www.ikea.com/pl/pl/cat/pudelka-kartonowe-i-ozdobne-16202/
|
||||
https://www.ikea.com/pl/pl/cat/pudelka-na-buty-i-ubrania-10565/
|
||||
https://www.ikea.com/pl/pl/cat/pojemniki-i-kosze-na-zabawki-20479/
|
||||
https://www.ikea.com/pl/pl/cat/kosze-i-koszyki-16201/
|
||||
https://www.ikea.com/pl/pl/cat/pudelka-i-koszyki-do-lazienki-16233/
|
||||
https://www.ikea.com/pl/pl/cat/wieszaki-20618/
|
||||
https://www.ikea.com/pl/pl/cat/organizery-na-ubrania-i-buty-dla-dzieci-20477/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-do-wieszania-ubran-10459/
|
||||
https://www.ikea.com/pl/pl/cat/pudelka-i-organizery-na-buty-47380/
|
||||
https://www.ikea.com/pl/pl/cat/kosze-na-pranie-i-bielizne-20601/
|
||||
https://www.ikea.com/pl/pl/cat/tablice-magnetyczne-korkowe-i-inne-10574/
|
||||
https://www.ikea.com/pl/pl/cat/segregatory-10567/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-biurowe-10573/
|
||||
https://www.ikea.com/pl/pl/cat/kosze-do-segregacji-odpadow-34470/
|
||||
https://www.ikea.com/pl/pl/cat/haki-20617/
|
||||
https://www.ikea.com/pl/pl/cat/tablice-scienne-i-akcesoria-37900/
|
||||
https://www.ikea.com/pl/pl/cat/wieszaki-i-polki-dla-dzieci-20481/
|
||||
https://www.ikea.com/pl/pl/cat/torby-i-wozki-na-zakupy-16295/
|
||||
https://www.ikea.com/pl/pl/cat/plecaki-i-torby-na-ramie-27821/
|
||||
https://www.ikea.com/pl/pl/cat/poduszki-podrozne-i-akcesoria-turystyczne-16255/
|
||||
https://www.ikea.com/pl/pl/cat/organizery-do-toreb-47441/
|
||||
https://www.ikea.com/pl/pl/cat/torby-chlodzace-46082/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-do-przeprowadzki-46078/
|
||||
https://www.ikea.com/pl/pl/cat/kosze-lazienkowe-48940/
|
||||
https://www.ikea.com/pl/pl/cat/polki-i-akcesoria-prysznicowe-10658/
|
||||
https://www.ikea.com/pl/pl/cat/dozowniki-mydla-i-mydelniczki-10656/
|
||||
https://www.ikea.com/pl/pl/cat/szczotki-toaletowe-48944/
|
||||
https://www.ikea.com/pl/pl/cat/uchwyty-na-szczoteczki-do-zebow-48943/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-lazienkowe-bez-wiercenia-700699/
|
||||
https://www.ikea.com/pl/pl/cat/pojemniki-na-zywnosc-20606/
|
||||
https://www.ikea.com/pl/pl/cat/zestawy-pojemnikow-na-zywnosc-700586/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-do-przechowywania-zywnosci-i-zamykane-torby-700611/
|
||||
https://www.ikea.com/pl/pl/cat/organizery-do-lodowek-700588/
|
||||
https://www.ikea.com/pl/pl/cat/organizery-do-spizarni-i-na-blaty-robocze-700589/
|
||||
https://www.ikea.com/pl/pl/cat/sloiki-puszki-i-chlebaki-15950/
|
||||
https://www.ikea.com/pl/pl/cat/pojemniki-na-przyprawy-15951/
|
||||
https://www.ikea.com/pl/pl/cat/kubki-termiczne-i-bidony-700352/
|
||||
https://www.ikea.com/pl/pl/cat/stojaki-na-wino-i-butelki-15952/
|
||||
https://www.ikea.com/pl/pl/cat/mix-match-pojemnikow-i-pokrywek-na-zywnosc-700610/
|
||||
https://www.ikea.com/pl/pl/cat/biurka-do-domu-20651/
|
||||
https://www.ikea.com/pl/pl/cat/produkty-akustyczne-mittzon-700539/
|
||||
https://www.ikea.com/pl/pl/cat/kontenerki-i-przechowywanie-trotten-55992/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-trotten-55990/
|
||||
https://www.ikea.com/pl/pl/cat/nogi-i-kozly-do-stolow-biurek-11845/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-do-relatera-700564/
|
||||
https://www.ikea.com/pl/pl/cat/podstawki-i-stoliki-pod-laptopa-24830/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-gamingowe-55397/
|
||||
https://www.ikea.com/pl/pl/cat/lampy-wiszace-i-zyrandole-18751/
|
||||
https://www.ikea.com/pl/pl/cat/lampy-sufitowe-18752/
|
||||
https://www.ikea.com/pl/pl/cat/reflektory-sufitowe-18753/
|
||||
https://www.ikea.com/pl/pl/cat/lampy-stolowe-10732/
|
||||
https://www.ikea.com/pl/pl/cat/lampy-podlogowe-10731/
|
||||
https://www.ikea.com/pl/pl/cat/klosze-i-abazury-do-lamp-10804/
|
||||
https://www.ikea.com/pl/pl/cat/podstawy-i-oprawki-do-lamp-10805/
|
||||
https://www.ikea.com/pl/pl/cat/lampki-na-biurko-20502/
|
||||
https://www.ikea.com/pl/pl/cat/reflektory-scienne-20505/
|
||||
https://www.ikea.com/pl/pl/cat/oswietlenie-szynowe-25209/
|
||||
https://www.ikea.com/pl/pl/cat/lampy-scienne-i-kinkiety-20504/
|
||||
https://www.ikea.com/pl/pl/cat/oswietlenie-pokoju-dzieciecego-18773/
|
||||
https://www.ikea.com/pl/pl/cat/oswietlenie-szafek-lazienkowych-55010/
|
||||
https://www.ikea.com/pl/pl/cat/oswietlenie-mebli-kuchennych-16282/
|
||||
https://www.ikea.com/pl/pl/cat/oswietlenie-regalow-16281/
|
||||
https://www.ikea.com/pl/pl/cat/oswietlenie-sufitowe-do-lazienki-700215/
|
||||
https://www.ikea.com/pl/pl/cat/oswietlenie-scienne-do-lazienki-700214/
|
||||
https://www.ikea.com/pl/pl/cat/lampy-stolowe-zewnetrzne-700617/
|
||||
https://www.ikea.com/pl/pl/cat/lampy-wiszace-zewnetrzne-700618/
|
||||
https://www.ikea.com/pl/pl/cat/zewnetrzne-lancuchy-swietlne-700619/
|
||||
https://www.ikea.com/pl/pl/cat/lampiony-i-latarenki-do-zewnatrz-54942/
|
||||
https://www.ikea.com/pl/pl/cat/dekoracje-swietlne-stolu-700179/
|
||||
https://www.ikea.com/pl/pl/cat/dekoracyjne-lampy-wiszace-700177/
|
||||
https://www.ikea.com/pl/pl/cat/swiece-led-39266/
|
||||
https://www.ikea.com/pl/pl/cat/oswietlenie-dekoracyjne-led-54943/
|
||||
https://www.ikea.com/pl/pl/cat/podnozki-i-pufy-rattanowe-20929/
|
||||
https://www.ikea.com/pl/pl/cat/pokrycia-podnozek-i-puf-57654/
|
||||
https://www.ikea.com/pl/pl/cat/rocksjoen-coverity-700555/
|
||||
https://www.ikea.com/pl/pl/cat/pokrycia-backsaelen-54993/
|
||||
https://www.ikea.com/pl/pl/cat/ektorp-10978/
|
||||
https://www.ikea.com/pl/pl/cat/groenlid-39516/
|
||||
https://www.ikea.com/pl/pl/cat/holmsund-39519/
|
||||
https://www.ikea.com/pl/pl/cat/pokrycia-hyltarp-700442/
|
||||
https://www.ikea.com/pl/pl/cat/pokrycia-jaettebo-700176/
|
||||
https://www.ikea.com/pl/pl/cat/kivik-18705/
|
||||
https://www.ikea.com/pl/pl/cat/klippan-10984/
|
||||
https://www.ikea.com/pl/pl/cat/pokrycia-lillehem-700530/
|
||||
https://www.ikea.com/pl/pl/cat/poaeng-10996/
|
||||
https://www.ikea.com/pl/pl/cat/pokrycia-paerup-54994/
|
||||
https://www.ikea.com/pl/pl/cat/soederhamn-22275/
|
||||
https://www.ikea.com/pl/pl/cat/vimle-38190/
|
||||
https://www.ikea.com/pl/pl/cat/vretstorp-49972/
|
||||
https://www.ikea.com/pl/pl/cat/inne-pokrycia-47990/
|
||||
https://www.ikea.com/pl/pl/cat/okladki-ekholma-700594/
|
||||
https://www.ikea.com/pl/pl/cat/poduchy-do-sof-57536/
|
||||
https://www.ikea.com/pl/pl/cat/nogi-do-sof-i-foteli-31785/
|
||||
https://www.ikea.com/pl/pl/cat/poszewki-na-poduszki-dekoracyjne-18903/
|
||||
https://www.ikea.com/pl/pl/cat/poduszki-dekoracyjne-18902/
|
||||
https://www.ikea.com/pl/pl/cat/poduszki-do-uzytku-na-zewnatrz-46401/
|
||||
https://www.ikea.com/pl/pl/cat/poduszki-wewnetrzne-18904/
|
||||
https://www.ikea.com/pl/pl/cat/poduszki-dekoracyjne-i-koce-dla-dzieci-18777/
|
||||
https://www.ikea.com/pl/pl/cat/pledy-i-koce-20528/
|
||||
https://www.ikea.com/pl/pl/cat/komplety-poscieli-10680/
|
||||
https://www.ikea.com/pl/pl/cat/przescieradla-10681/
|
||||
https://www.ikea.com/pl/pl/cat/posciel-dla-dzieci-18776/
|
||||
https://www.ikea.com/pl/pl/cat/poszewki-na-poduszki-18890/
|
||||
https://www.ikea.com/pl/pl/cat/posciel-dla-niemowlat-18692/
|
||||
https://www.ikea.com/pl/pl/cat/koldry-poliestrowe-20530/
|
||||
https://www.ikea.com/pl/pl/cat/koldry-z-pierza-i-puchu-20531/
|
||||
https://www.ikea.com/pl/pl/cat/koldry-obciazeniowe-54991/
|
||||
https://www.ikea.com/pl/pl/cat/koldry-i-poduszki-dla-niemowlat-18694/
|
||||
https://www.ikea.com/pl/pl/cat/poduszki-poliestrowe-20534/
|
||||
https://www.ikea.com/pl/pl/cat/poduszki-z-pierza-i-puchu-20535/
|
||||
https://www.ikea.com/pl/pl/cat/poduszki-ergonomiczne-46083/
|
||||
https://www.ikea.com/pl/pl/cat/poduszki-z-pianki-i-pianki-memory-20536/
|
||||
https://www.ikea.com/pl/pl/cat/poszewki-ochronne-700529/
|
||||
https://www.ikea.com/pl/pl/cat/narzuty-na-lozko-20527/
|
||||
https://www.ikea.com/pl/pl/cat/ochraniacze-na-materace-i-poduszki-24824/
|
||||
https://www.ikea.com/pl/pl/cat/pokrycia-do-lozek-i-zaglowkow-57280/
|
||||
https://www.ikea.com/pl/pl/cat/duze-reczniki-20523/
|
||||
https://www.ikea.com/pl/pl/cat/reczniki-do-rak-20525/
|
||||
https://www.ikea.com/pl/pl/cat/reczniki-kapielowe-20524/
|
||||
https://www.ikea.com/pl/pl/cat/reczniki-do-twarzy-20521/
|
||||
https://www.ikea.com/pl/pl/cat/reczniki-i-akcesoria-do-kapieli-niemowlat-18700/
|
||||
https://www.ikea.com/pl/pl/cat/dywaniki-i-maty-lazienkowe-20519/
|
||||
https://www.ikea.com/pl/pl/cat/zaslony-prysznicowe-i-drazki-18908/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-do-domowego-spa-700339/
|
||||
https://www.ikea.com/pl/pl/cat/koldry-i-poduszki-dla-dzieci-31773/
|
||||
https://www.ikea.com/pl/pl/cat/dywany-do-pokoju-dzieciecego-18774/
|
||||
https://www.ikea.com/pl/pl/cat/baldachimy-i-akcesoria-do-lozek-dla-dzieci-18775/
|
||||
https://www.ikea.com/pl/pl/cat/dywany-do-pokoju-niemowlecego-18699/
|
||||
https://www.ikea.com/pl/pl/cat/kocyki-dla-niemowlat-18695/
|
||||
https://www.ikea.com/pl/pl/cat/scierki-i-sciereczki-kuchenne-18851/
|
||||
https://www.ikea.com/pl/pl/cat/fartuchy-kuchenne-18852/
|
||||
https://www.ikea.com/pl/pl/cat/obrusy-i-biezniki-20541/
|
||||
https://www.ikea.com/pl/pl/cat/podkladki-i-podstawki-stolowe-20539/
|
||||
https://www.ikea.com/pl/pl/cat/serwetki-20561/
|
||||
https://www.ikea.com/pl/pl/cat/poduszki-i-siedziska-na-krzesla-20542/
|
||||
https://www.ikea.com/pl/pl/cat/poduszki-do-siedzenia-na-zewnatrz-46400/
|
||||
https://www.ikea.com/pl/pl/cat/duze-i-srednie-dywany-10692/
|
||||
https://www.ikea.com/pl/pl/cat/chodniki-i-male-dywany-10689/
|
||||
https://www.ikea.com/pl/pl/cat/dywany-wykonane-recznie-39267/
|
||||
https://www.ikea.com/pl/pl/cat/dywany-na-balkon-i-taras-34204/
|
||||
https://www.ikea.com/pl/pl/cat/wycieraczki-pod-drzwi-10698/
|
||||
https://www.ikea.com/pl/pl/cat/skory-owcze-i-krowie-20544/
|
||||
https://www.ikea.com/pl/pl/cat/maty-antyposlizgowe-pod-dywan-10699/
|
||||
https://www.ikea.com/pl/pl/cat/dywany-okragle-20543/
|
||||
https://www.ikea.com/pl/pl/cat/odziez-i-akcesoria-42925/
|
||||
https://www.ikea.com/pl/pl/cat/tkaniny-14349/
|
||||
https://www.ikea.com/pl/pl/cat/podparcie-odcinka-ledzwiowego-700528/
|
||||
https://www.ikea.com/pl/pl/rooms/bedroom/znajdz-koldry-idealne-dla-siebie-pubff1f62ba/
|
||||
https://www.ikea.com/pl/pl/cat/maty-na-materac-24826/
|
||||
https://www.ikea.com/pl/pl/cat/materace-do-lozeczek-dla-niemowlat-45855/
|
||||
https://www.ikea.com/pl/pl/cat/pojemniki-pod-lozko-19059/
|
||||
https://www.ikea.com/pl/pl/cat/nogi-do-lozek-24822/
|
||||
https://www.ikea.com/pl/pl/cat/zaslony-zaciemniajace-700218/
|
||||
https://www.ikea.com/pl/pl/cat/zaslony-zacieniajace-700219/
|
||||
https://www.ikea.com/pl/pl/cat/zaslony-polprzezroczyste-700220/
|
||||
https://www.ikea.com/pl/pl/cat/firanki-700221/
|
||||
https://www.ikea.com/pl/pl/cat/rolety-zaciemniajace-700222/
|
||||
https://www.ikea.com/pl/pl/cat/rolety-plisowane-700225/
|
||||
https://www.ikea.com/pl/pl/cat/rolety-rzymskie-700224/
|
||||
https://www.ikea.com/pl/pl/cat/rolety-bezsznurkowe-700223/
|
||||
https://www.ikea.com/pl/pl/cat/rolety-elektryczne-44531/
|
||||
https://www.ikea.com/pl/pl/cat/zaluzje-weneckie-700599/
|
||||
https://www.ikea.com/pl/pl/cat/folie-okienne-i-akcesoria-700628/
|
||||
https://www.ikea.com/pl/pl/cat/karnisze-i-zabki-18892/
|
||||
https://www.ikea.com/pl/pl/cat/system-karniszy-szynowych-18893/
|
||||
https://www.ikea.com/pl/pl/cat/krzeselka-do-karmienia-45782/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-do-przewijania-45925/
|
||||
https://www.ikea.com/pl/pl/cat/nocniki-i-wanienki-dla-niemowlat-45924/
|
||||
https://www.ikea.com/pl/pl/cat/sliniaki-i-naczynia-dla-niemowlat-31772/
|
||||
https://www.ikea.com/pl/pl/cat/miekkie-zabawki-dla-niemowlat-700632/
|
||||
https://www.ikea.com/pl/pl/cat/aktywne-zabawki-dla-niemowlat-700633/
|
||||
https://www.ikea.com/pl/pl/cat/bezpieczenstwo-dzieci-16257/
|
||||
https://www.ikea.com/pl/pl/cat/krzeselka-dla-dzieci-18769/
|
||||
https://www.ikea.com/pl/pl/cat/stoliki-dla-dzieci-18768/
|
||||
https://www.ikea.com/pl/pl/cat/meble-ogrodowe-dla-dzieci-37899/
|
||||
https://www.ikea.com/pl/pl/cat/stolki-i-lawki-dla-dzieci-45816/
|
||||
https://www.ikea.com/pl/pl/cat/krzesla-wysokie-dla-dzieci-45815/
|
||||
https://www.ikea.com/pl/pl/cat/dekoracje-i-akcesoria-dla-dzieci-24711/
|
||||
https://www.ikea.com/pl/pl/cat/przybory-do-malowania-i-rekodziela-18735/
|
||||
https://www.ikea.com/pl/pl/cat/pluszaki-i-maskotki-18740/
|
||||
https://www.ikea.com/pl/pl/cat/zabawki-do-odgrywania-rol-18737/
|
||||
https://www.ikea.com/pl/pl/cat/zabawki-i-gry-ruchowe-18736/
|
||||
https://www.ikea.com/pl/pl/cat/zabawki-drewniane-18738/
|
||||
https://www.ikea.com/pl/pl/cat/namioty-dla-dzieci-20484/
|
||||
https://www.ikea.com/pl/pl/cat/gry-planszowe-i-karciane-42921/
|
||||
https://www.ikea.com/pl/pl/cat/naczynia-kuchenne-i-stolowe-dla-dzieci-18714/
|
||||
https://www.ikea.com/pl/pl/cat/komplety-naczyn-obiadowych-31781/
|
||||
https://www.ikea.com/pl/pl/cat/patelnie-20630/
|
||||
https://www.ikea.com/pl/pl/cat/woki-20631/
|
||||
https://www.ikea.com/pl/pl/cat/patelnie-grillowe-22664/
|
||||
https://www.ikea.com/pl/pl/cat/rondle-do-smazenia-saute-22665/
|
||||
https://www.ikea.com/pl/pl/cat/garnki-20634/
|
||||
https://www.ikea.com/pl/pl/cat/zestawy-garnkow-31774/
|
||||
https://www.ikea.com/pl/pl/cat/rondle-20635/
|
||||
https://www.ikea.com/pl/pl/cat/szybkowary-22669/
|
||||
https://www.ikea.com/pl/pl/cat/naczynia-zaroodporne-15928/
|
||||
https://www.ikea.com/pl/pl/cat/wklady-do-gotowania-pokrywki-i-podstawki-pod-garnki-15927/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-do-gotowania-33499/
|
||||
https://www.ikea.com/pl/pl/cat/miarki-kuchenne-15949/
|
||||
https://www.ikea.com/pl/pl/cat/miski-do-mieszania-20669/
|
||||
https://www.ikea.com/pl/pl/cat/chochle-trzepaczki-i-lyzki-kuchenne-33498/
|
||||
https://www.ikea.com/pl/pl/cat/durszlaki-i-sitka-20667/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-do-lodow-i-kostek-lodu-33500/
|
||||
https://www.ikea.com/pl/pl/cat/przybory-do-pieczenia-20645/
|
||||
https://www.ikea.com/pl/pl/cat/slomki-korkociagi-i-inne-akcesoria-18872/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-do-kawy-20622/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-do-herbaty-20621/
|
||||
https://www.ikea.com/pl/pl/cat/tace-16048/
|
||||
https://www.ikea.com/pl/pl/cat/miski-20619/
|
||||
https://www.ikea.com/pl/pl/cat/patery-i-tace-do-serwowania-potraw-59251/
|
||||
https://www.ikea.com/pl/pl/cat/sztucce-do-serwowania-potraw-18867/
|
||||
https://www.ikea.com/pl/pl/cat/suszarki-i-ociekacze-do-naczyn-700196/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-do-zlewozmywakow-24262/
|
||||
https://www.ikea.com/pl/pl/cat/komplety-sztuccow-18866/
|
||||
https://www.ikea.com/pl/pl/cat/deski-do-krojenia-15947/
|
||||
https://www.ikea.com/pl/pl/cat/ostrzalki-do-nozy-18849/
|
||||
https://www.ikea.com/pl/pl/cat/formy-i-blachy-do-pieczenia-20643/
|
||||
https://www.ikea.com/pl/pl/cat/serwetniki-20562/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-piknikowe-700353/
|
||||
https://www.ikea.com/pl/pl/cat/krzesla-skladane-25222/
|
||||
https://www.ikea.com/pl/pl/cat/ramki-na-zdjecia-i-obrazy-18746/
|
||||
https://www.ikea.com/pl/pl/cat/obrazy-10788/
|
||||
https://www.ikea.com/pl/pl/cat/plakaty-10787/
|
||||
https://www.ikea.com/pl/pl/cat/multiramki-na-zdjecia-10789/
|
||||
https://www.ikea.com/pl/pl/cat/akcenty-scienne-700425/
|
||||
https://www.ikea.com/pl/pl/cat/swiece-zapachowe-10783/
|
||||
https://www.ikea.com/pl/pl/cat/swiece-bezzapachowe-10782/
|
||||
https://www.ikea.com/pl/pl/cat/swieczniki-i-podstawki-pod-swiece-10784/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-do-swiec-16307/
|
||||
https://www.ikea.com/pl/pl/cat/miski-i-polmiski-16308/
|
||||
https://www.ikea.com/pl/pl/cat/doniczki-do-wewnatrz-10778/
|
||||
https://www.ikea.com/pl/pl/cat/doniczki-na-zewnatrz-30436/
|
||||
https://www.ikea.com/pl/pl/cat/doniczki-wiszace-59240/
|
||||
https://www.ikea.com/pl/pl/cat/stojaki-i-wozki-na-doniczki-20494/
|
||||
https://www.ikea.com/pl/pl/cat/konewki-20493/
|
||||
https://www.ikea.com/pl/pl/cat/doniczki-samonawadniajace-20495/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-i-narzedzia-ogrodnicze-24887/
|
||||
https://www.ikea.com/pl/pl/cat/figurki-i-ozdoby-dekoracyjne-24924/
|
||||
https://www.ikea.com/pl/pl/cat/potpourri-58412/
|
||||
https://www.ikea.com/pl/pl/cat/saszetki-zapachowe-do-szaf-i-regalow-58411/
|
||||
https://www.ikea.com/pl/pl/cat/swiece-i-swieczniki-swiateczne-49157/
|
||||
https://www.ikea.com/pl/pl/cat/dekoracje-swiateczne-stolu-49156/
|
||||
https://www.ikea.com/pl/pl/cat/metod-organizery-i-akcesoria-wewnetrzne-49118/
|
||||
https://www.ikea.com/pl/pl/cat/zmywarki-do-kuchni-metod-50387/
|
||||
https://www.ikea.com/pl/pl/cat/pralki-do-metod-50390/
|
||||
https://www.ikea.com/pl/pl/cat/zlewy-i-zlewozmywaki-24263/
|
||||
https://www.ikea.com/pl/pl/cat/baterie-kuchenne-10482/
|
||||
https://www.ikea.com/pl/pl/cat/czesci-do-zlewozmywakow-53253/
|
||||
https://www.ikea.com/pl/pl/cat/zlewy-i-baterie-do-knoxhult-48979/
|
||||
https://www.ikea.com/pl/pl/cat/panele-scienne-do-knoxhult-48983/
|
||||
https://www.ikea.com/pl/pl/cat/zmywarki-do-kuchni-enhet-50378/
|
||||
https://www.ikea.com/pl/pl/cat/szafki-kuchenne-enhet-48993/
|
||||
https://www.ikea.com/pl/pl/cat/organizery-enhet-49015/
|
||||
https://www.ikea.com/pl/pl/cat/zlewy-i-krany-do-enhet-50011/
|
||||
https://www.ikea.com/pl/pl/cat/kombinacje-do-przechowywania-enhet-55006/
|
||||
https://www.ikea.com/pl/pl/cat/organizery-do-szuflad-kuchennych-24257/
|
||||
https://www.ikea.com/pl/pl/cat/tace-na-sztucce-do-szuflad-40cm-700172/
|
||||
https://www.ikea.com/pl/pl/cat/tace-na-sztucce-do-szuflad-60cm-700173/
|
||||
https://www.ikea.com/pl/pl/cat/tace-na-sztucce-do-szuflad-80cm-700174/
|
||||
https://www.ikea.com/pl/pl/cat/kosze-do-szafek-kuchennych-24259/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-na-srodki-czystosci-24256/
|
||||
https://www.ikea.com/pl/pl/cat/scienne-organizery-kuchenne-20677/
|
||||
https://www.ikea.com/pl/pl/cat/polki-kuchenne-20678/
|
||||
https://www.ikea.com/pl/pl/cat/baterie-do-sunnersta-48989/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-do-sunnersta-48987/
|
||||
https://www.ikea.com/pl/pl/cat/zlewozmywaki-i-baterie-do-aespinge-700402/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-do-aespinge-700401/
|
||||
https://www.ikea.com/pl/pl/cat/zlewozmywaki-i-baterie-do-oennerup-700536/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-do-oennerup-700537/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-i-osprzet-700674/
|
||||
https://www.ikea.com/pl/pl/cat/zawiasy-i-amortyzatory-24260/
|
||||
https://www.ikea.com/pl/pl/cat/baterie-umywalkowe-20724/
|
||||
https://www.ikea.com/pl/pl/cat/blaty-lazienkowe-30565/
|
||||
https://www.ikea.com/pl/pl/cat/zestawy-prysznicowe-i-drazki-40693/
|
||||
https://www.ikea.com/pl/pl/cat/sluchawki-prysznicowe-40692/
|
||||
https://www.ikea.com/pl/pl/cat/baterie-prysznicowe-40691/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-do-prania-55004/
|
||||
https://www.ikea.com/pl/pl/cat/deski-do-prasowania-20608/
|
||||
https://www.ikea.com/pl/pl/cat/taborety-i-lawy-lazienkowe-20859/
|
||||
https://www.ikea.com/pl/pl/cat/kosze-na-makulature-16215/
|
||||
https://www.ikea.com/pl/pl/cat/worki-i-torby-16214/
|
||||
https://www.ikea.com/pl/pl/cat/akcesoria-do-sprzatania-20609/
|
||||
https://www.ikea.com/pl/pl/cat/podlogi-na-balkon-i-taras-21957/
|
||||
https://www.ikea.com/pl/pl/cat/produkty-dla-psow-39570/
|
||||
https://www.ikea.com/pl/pl/cat/produkty-dla-kotow-39569/
|
||||
https://www.ikea.com/pl/pl/cat/pokrowce-na-meble-ogrodowe-i-grille-34205/
|
||||
https://www.ikea.com/pl/pl/cat/parasole-ogrodowe-i-podstawy-17894/
|
||||
https://www.ikea.com/pl/pl/cat/altany-ogrodowe-i-moskitiery-24331/
|
||||
https://www.ikea.com/pl/pl/cat/parawany-i-oslony-balkonowe-17895/
|
||||
https://www.ikea.com/pl/pl/cat/zestawy-kuchenne-na-zewnatrz-55998/
|
||||
https://www.ikea.com/pl/pl/cat/meble-i-czesci-kuchenne-na-swiezym-powietrzu-700544/
|
||||
https://www.ikea.com/pl/pl/cat/donice-i-wazony-swiateczne-49160/
|
||||
https://www.ikea.com/pl/pl/cat/tekstylia-swiateczne-49152/
|
||||
https://www.ikea.com/pl/pl/cat/gotowanie-i-pieczenie-swiateczne-49154/
|
||||
https://www.ikea.com/pl/pl/cat/zastawa-stolowa-swiateczna-49153/
|
||||
@ -98,6 +98,7 @@ KEEP_COLUMNS = [
|
||||
"productInformationSection.productDetailsProps",
|
||||
"productInformationSection.productDetailsProps_formatted",
|
||||
"productInformationSection.productDetailsProps_formatted_html",
|
||||
"productInformationSection.dimensionsOnly_formatted_html_translated",
|
||||
"productSummary.description",
|
||||
"productSummary.visibleItemNo",
|
||||
"stockcheckSection.packagingProps",
|
||||
@ -256,7 +257,7 @@ def format_dimensions(raw_dim_props, with_html=False, translated=False):
|
||||
br = "<br/>" if with_html else "\n"
|
||||
|
||||
title = translate_token("Wymiary") if translated else "Wymiary"
|
||||
lines.append(f"<strong>{title}</strong>" if with_html else title)
|
||||
lines.append(f"<b>{title}</b>" if with_html else title)
|
||||
|
||||
for d in raw_dim_props.get("dimensions", []):
|
||||
name = d.get("name", "")
|
||||
@ -273,7 +274,7 @@ def format_dimensions(raw_dim_props, with_html=False, translated=False):
|
||||
pack = (raw_dim_props.get("packaging") or {})
|
||||
pack_title = translate_token("Opakowanie") if translated else "Opakowanie"
|
||||
lines.append(br if with_html else "")
|
||||
lines.append(f"<strong>{pack_title}</strong>" if with_html else pack_title)
|
||||
lines.append(f"<b>{pack_title}</b>" if with_html else pack_title)
|
||||
|
||||
content = (pack.get("contentProps") or {}).get("packages") or []
|
||||
for pkg in content:
|
||||
@ -312,7 +313,7 @@ def format_dimensions(raw_dim_props, with_html=False, translated=False):
|
||||
s = br.join([x for x in lines if x is not None])
|
||||
s = re.sub(r"(" + re.escape(br) + r"){2,}", br*2, s)
|
||||
s = s.strip(br)
|
||||
if s.startswith("strong>"):
|
||||
if s.startswith("b>"):
|
||||
s = "<" + s
|
||||
return s
|
||||
return "\n".join([x for x in lines if x is not None]).strip()
|
||||
@ -329,7 +330,7 @@ def format_product_details(raw_details, add_summary_desc="", with_html=False, sk
|
||||
out.append(br if with_html else "")
|
||||
|
||||
t1 = "Informacje o produkcie"
|
||||
out.append(f"<strong>{t1}</strong>" if with_html else t1)
|
||||
out.append(f"<b>{t1}</b>" if with_html else t1)
|
||||
pd = (raw_details.get("productDescriptionProps") or {})
|
||||
paragraphs = pd.get("paragraphs") or []
|
||||
for p in paragraphs:
|
||||
@ -350,7 +351,7 @@ def format_product_details(raw_details, add_summary_desc="", with_html=False, sk
|
||||
if gk:
|
||||
out.append(br if with_html else "")
|
||||
t2 = "Dobrze wiedzieć"
|
||||
out.append(f"<strong>{t2}</strong>" if with_html else t2)
|
||||
out.append(f"<b>{t2}</b>" if with_html else t2)
|
||||
for item in gk:
|
||||
txt = item.get("text")
|
||||
if txt:
|
||||
@ -363,7 +364,7 @@ def format_product_details(raw_details, add_summary_desc="", with_html=False, sk
|
||||
t3 = "Materiały i pielęgnacja"
|
||||
if mats or care:
|
||||
out.append(br if with_html else "")
|
||||
out.append(f"<strong>{t3}</strong>" if with_html else t3)
|
||||
out.append(f"<b>{t3}</b>" if with_html else t3)
|
||||
|
||||
if mats:
|
||||
out.append("Materiały")
|
||||
@ -392,7 +393,7 @@ def format_product_details(raw_details, add_summary_desc="", with_html=False, sk
|
||||
if sc:
|
||||
out.append(br if with_html else "")
|
||||
t4 = "Bezpieczeństwo i zgodność с przepisami"
|
||||
out.append(f"<strong>{t4}</strong>" if with_html else t4)
|
||||
out.append(f"<b>{t4}</b>" if with_html else t4)
|
||||
for s in sc:
|
||||
txt = s.get("text")
|
||||
if txt:
|
||||
@ -419,6 +420,41 @@ def build_variant_color_measure(desc: str, type_name: str, measurement: str) ->
|
||||
s = s[:1].upper() + s[1:]
|
||||
return f"{s}, {meas}" if meas else s
|
||||
|
||||
def format_dimensions_only(raw_dim_props, with_html=False, translated=False):
|
||||
"""
|
||||
Возвращает ТОЛЬКО секцию размеров (Wymiary) без упаковки.
|
||||
Форматирование такое же, как в остальных форматтерах: <b>…</b> и <br/>.
|
||||
"""
|
||||
if not isinstance(raw_dim_props, dict):
|
||||
return ""
|
||||
lines = []
|
||||
br = "<br/>" if with_html else "\n"
|
||||
|
||||
title = translate_token("Wymiary") if translated else "Wymiary"
|
||||
lines.append(f"<b>{title}</b>" if with_html else title)
|
||||
|
||||
for d in raw_dim_props.get("dimensions", []):
|
||||
name = d.get("name", "")
|
||||
meas = d.get("measure", "")
|
||||
if not name and not meas:
|
||||
continue
|
||||
if translated:
|
||||
name_t = translate_token(name)
|
||||
line = f"{name_t}: {meas}".strip()
|
||||
else:
|
||||
line = f"{name}: {meas}".strip()
|
||||
lines.append(line)
|
||||
|
||||
if with_html:
|
||||
s = br.join([x for x in lines if x is not None])
|
||||
s = re.sub(r"(" + re.escape(br) + r"){2,}", br*2, s)
|
||||
s = s.strip(br)
|
||||
# страховка для Excel-предпросмотра
|
||||
if s.startswith("b>"):
|
||||
s = "<" + s
|
||||
return s
|
||||
return "\n".join([x for x in lines if x is not None]).strip()
|
||||
|
||||
# ───────────────────── СКРАПИНГ КАРТОЧКИ ──────────────────────────
|
||||
def extract_data(url: str) -> dict:
|
||||
"""
|
||||
@ -456,9 +492,15 @@ def extract_data(url: str) -> dict:
|
||||
det_json = _parse_json_value(result.get("productInformationSection.productDetailsProps"))
|
||||
|
||||
result["keyFacts.keyFacts_formatted"] = format_keyfacts(kf_json)
|
||||
result["productInformationSection.dimensionProps_formatted"] = format_dimensions(dim_json, with_html=False, translated=False)
|
||||
result["productInformationSection.dimensionProps_formatted"] = format_dimensions(dim_json, with_html=True, translated=True)
|
||||
# Новая колонка: только размеры (без упаковки), в HTML
|
||||
dims_only_html = format_dimensions_only(dim_json, with_html=True, translated=True)
|
||||
#if isinstance(dims_only_html, str) and dims_only_html.startswith("b>"):
|
||||
# dims_only_html = "<" + dims_only_html
|
||||
result["productInformationSection.dimensionsOnly_formatted_html_translated"] = dims_only_html
|
||||
|
||||
html_trans = format_dimensions(dim_json, with_html=True, translated=True)
|
||||
if isinstance(html_trans, str) and html_trans.startswith("strong>"):
|
||||
if isinstance(html_trans, str) and html_trans.startswith("b>"):
|
||||
html_trans = "<" + html_trans
|
||||
result["productInformationSection.dimensionProps_formatted_html_translated"] = html_trans
|
||||
|
||||
@ -536,7 +578,7 @@ def build_variant(row: dict) -> dict:
|
||||
url = row.get("url") or ""
|
||||
name = row.get("originalName") or row.get("buyModule.productName") or ""
|
||||
desc_html = row.get("productInformationSection.productDetailsProps_formatted_html") or ""
|
||||
composition_html = row.get("productInformationSection.dimensionProps_formatted_html_translated") or ""
|
||||
composition_html = row.get("productInformationSection.dimensionsOnly_formatted_html_translated") or ""
|
||||
|
||||
imgs = []
|
||||
raw_imgs = row.get("productGallery.urls") or ""
|
||||
|
||||