Π ΡΠΏΠΎΡ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΠΈΠ»ΠΈΡ Π²Π΅Π±-ΡΠΊΡΠ°ΠΏΠΈΠ½Π³ ΡΡΠ°Π» Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΡΠ΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°. ΠΠΎ Ρ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Π½Π°ΡΠ°ΡΡ ΡΠ²ΠΎΠΉ ΠΏΡΡΡ? Scrapy ΠΈ Crawlee β Π΄Π²Π° Π΄ΠΎΡΡΠΎΠΉΠ½ΡΡ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠ°, ΠΈ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΠΏΠΎΠΌΠΎΠΆΠ΅ΠΌ Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ!
ΠΡΠΎΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» Π²Π·ΡΡ ΠΈΠ· Π½Π°ΡΠ΅ΠΉ ΡΡΠ±Π±ΠΎΡΠ½Π΅ΠΉ email-ΡΠ°ΡΡΡΠ»ΠΊΠΈ, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΠΎΠΉ Python. ΠΠΎΠ΄ΠΏΠΈΡΠΈΡΠ΅ΡΡ, ΡΡΠΎΠ±Ρ Π±ΡΡΡ Π² ΡΠΈΡΠ»Π΅ ΠΏΠ΅ΡΠ²ΡΡ , ΠΊΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡ Π΄Π°ΠΉΠ΄ΠΆΠ΅ΡΡ.
(function () { let link = document .getElementById ("ed4921fc-878f-4d26-9678-f72c84d688a3-https://proglib.io/w/edaee37b-2"); if (! link) return; let href = link .getAttribute ("href"); if (! href) return; let prefix = link .dataset .prefix; let action = link .dataset .action; link .addEventListener ("click", function (e) { let data = new FormData (); data .append ("url", href); apiFetch (action, { method: "POST", body: data }) .then (function (res) {}) .catch (function (err) { console .error (err); }); }) })();
Scrapy ΠΈ Crawlee β ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Π΄Π»Ρ ΡΠΊΡΠ°ΠΏΠΈΠ½Π³Π°. ΠΠ΅ΡΠ²ΡΠΉ β Π·Π°ΡΠ»ΡΠΆΠ΅Π½Π½ΡΠΉ Π²Π΅ΡΠ΅ΡΠ°Π½, Π²ΡΠΎΡΠΎΠΉ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ. ΠΡΠΎΡ ΠΎΠ±Π·ΠΎΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π»ΡΡΡΠ΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π° ΡΡΠΎΡ ΡΡΡΠΎΡΠΈΠ°Π» Π½Π° Π₯Π°Π±ΡΠ΅ Π½Π°ΡΡΠΈΡ ΠΎΡΠ½ΠΎΠ²Π°ΠΌ ΡΠ°Π±ΠΎΡΡ ΡΠΎ Scrapy.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Scrapy
- ΠΠ°ΠΏΠΈΡΠ°Π½ Π½Π° Python ΠΈ Π±Π΅ΡΡΠΎΠ²Π½ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΡΡ Ρ Π»ΡΠ±ΡΠΌΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ Python-ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π΄Π»Ρ ΡΠ±ΠΎΡΠ° ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ .
- ΠΠΌΠ΅Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Ρ Β«ΠΏΠ°ΡΠΊΠ°ΠΌΠΈΒ» (Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΌΠΈ ΠΊΡΠ°ΡΠ»Π΅ΡΠ°ΠΌΠΈ), ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΌ ΠΠ, ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°ΠΌΠΈ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠ±ΡΠ°Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ Π²ΡΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ.
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΡΠ΅Π· Scrapyd ΠΈ Scrapy Cluster.
- ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ Π½Π° ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ HTML-ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Scrapy
- Π¨ΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².
- ΠΠΌΠ΅Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ ΡΡΡΠΎΡΠΈΠ°Π»ΠΎΠ².
- Π Π°ΡΡΠΈΡΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΠΌΠ°ΡΠΎΠ² Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ (CSV, JSON, XML ΠΈ Π΄Ρ.)
π ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΈΡΠΎΠ½ΠΈΡΡΠ°
ΠΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π½Π° Π½Π°ΡΠ΅ΠΌ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΈΡΠΎΠ½ΠΈΡΡΠ°Β»
ππ ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎΠ±Π΅ΡΠ° ΠΏΠΎ Python
ΠΠΎΠ΄ΡΡΠ½ΡΡΡ ΡΠ²ΠΎΠΈ Π·Π½Π°Π½ΠΈΡ ΠΏΠΎ Python Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π° Π½Π°ΡΠ΅ΠΌ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎΠ±Π΅ΡΠ° ΠΏΠΎ PythonΒ»
ππ§© ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π°Π΄Π°Ρ ΠΏΠΎ PythonΒ»
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΏΠΎ Python Π΄Π»Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π° Π½Π°ΡΠ΅ΠΌ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π°Π΄Π°Ρ ΠΏΠΎ PythonΒ»
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ Scrapy
- Π Π°Π±ΠΎΡΠ° Ρ JavaScript-ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ΠΎΠΌ ΡΡΠ΅Π±ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΈ Π½Π°ΡΡΡΠΎΠ΅ΠΊ.
- ΠΠ»Ρ ΡΠΎΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠΊΡΠΈ ΠΈ user agent Π½ΡΠΆΠ½Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ.
- Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±Π°ΡΡΠ΅ΡΠΎΠΌ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ .
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Crawlee
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ JavaScript ΠΈ TypeScript Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ·ΡΠΊΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠ° Ρ Playwright ΠΈ Puppeteer.
- ΠΠΌΠ΅Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ headless-Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ² ΠΈ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ JavaScript-ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ΠΎΠΌ.
- ΠΠ±Π»Π°Π΄Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΠ΅ΡΠ΅Π΄ΡΠΌΠΈ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΌΠ΅Π½Ρ ΠΏΡΠΎΠΊΡΠΈ ΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ .
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΅Π΄ΠΈΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ HTTP-Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ°ΠΌΠΈ.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Crawlee
- ΠΡΠΎΡΡΠΎΠΉ Π² ΠΎΡΠ²ΠΎΠ΅Π½ΠΈΠΈ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², Π·Π½Π°ΠΊΠΎΠΌΡΡ Ρ JavaScript/TypeScript.
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ (Puppeteer, Playwright).
- ΠΠΌΠ΅Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ JavaScript-ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°.
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ Crawlee
- ΠΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ (ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΠΎ Scrapy), ΠΌΠ΅Π½ΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ.
- ΠΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Python, Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡΡ Ρ JavaScript/TypeScript β Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π²Π½ΠΈΠΊΠ°ΡΡ Π² Π½ΠΎΠ²ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ.
***