From 1404b49853e643cb47980c5de63552c322829586 Mon Sep 17 00:00:00 2001 From: Saurav Jain Date: Mon, 8 Jul 2024 20:42:40 +0200 Subject: [PATCH] docs: add crawlee python launch blog (#2567) added launch blog for crawlee python --------- Co-authored-by: Saurav Jain --- .../img/crawlee-python-type-hint.webp | Bin 0 -> 22508 bytes .../img/crawlee-python.webp | Bin 0 -> 22040 bytes .../img/early-adopters.webp | Bin 0 -> 36970 bytes .../07-05-launching-crawlee-python/index.md | 136 ++++++++++++++++++ 4 files changed, 136 insertions(+) create mode 100644 website/blog/2024/07-05-launching-crawlee-python/img/crawlee-python-type-hint.webp create mode 100644 website/blog/2024/07-05-launching-crawlee-python/img/crawlee-python.webp create mode 100644 website/blog/2024/07-05-launching-crawlee-python/img/early-adopters.webp create mode 100644 website/blog/2024/07-05-launching-crawlee-python/index.md diff --git a/website/blog/2024/07-05-launching-crawlee-python/img/crawlee-python-type-hint.webp b/website/blog/2024/07-05-launching-crawlee-python/img/crawlee-python-type-hint.webp new file mode 100644 index 0000000000000000000000000000000000000000..613ab0c9a2f396b7d7d8adee9993bb8c83fb8712 GIT binary patch literal 22508 zcma&NV~{4@vIhFLZDShKwr$(fwr$(CjcMDqZBN_Nwt4&8`|P{VjW|E<6R~PND=RB2 zBP%1T)~YH+2~p7lRRBO$L{MHuo?Q(Z002;bH!BdpC=ftGNJt(L_{htil$k@^Fd(ZoKV>PsMZ~_2;n7_HatCQV7Jm{OFI($3z z&C~wjrvK)Z|8RqU^WJ~y{8AM9)>-`Kh=ykRM&JD4n^PP7FS+Ue;?`Eq|D5+9{Np{W zv5m6QcaQzuZ~-y^C4dBg;JX(9hyj=Y%m7A!5I_N-_#LPJ`?!C6#{Jf@1=s=H0S*9j zfGNNX;Ph=n;9Ft`umTu=a|wVAzz{(DeJKdOEz*BC=6~Y-ee5^>8^{03?9c%K4q*TQ zq~O0YgKr;OzJ14n`mc<*1OPx#0|1)+?DQS<|84Jk3-k!;Xu`z!uQ3oz3jhF?^7VE1 zofi-k0Kmt}*VkLi*Vjk!xBWE$p!e}RQwYMoqkw1+lnq2_4KfDA8!w(CMN*jmyU4-Z zt`-@})aISH&HgWwO$y2JqmMrBS1jdu_3SwQ&fE3Z#)I`I(IQ9=Sq2^3mFV_<=btXE zE(PC~uk%N^yQ&AXFOk2Yr$Ap{>zPHlCEJHzRbSRm7~4<#zHL5&pI>jfhbVhJ-JiT~ zPKH+tUnyS;pAAcNhhHAPxt|DYs#iS^zJqQhH!~mG@^r=?(C@w$pI2WM@Az-{ zAqY3VAHF^J_zzdLy7#fyn^rs&p{^NYe=0Hdh8`!&Iyz3kkN}NVv=j3ID4Te*w78KM zgaN({8cZOTU%EG8!lubM;6CwZaykS)*y(Uz&3cIyJd8}Vv?Ao#pxNpt@#*#s6#TQq zr!(U7zggo)GE%^*zy^O=eK<81bWmtGMWffa{(s?YGChjzk<(4iL}t*6P{>uP@9ej; zrS0#_$$ehqow14ViGIh<8QLUis-u{=gSoyCLopLE70Z0^HFYq^D{EABI6ng~x)Mc^ zp=uZiH8?WB+mrt*$mwHO*XsfCWt!62bRL{&L=tj$(d*J{Hghq`lHV(G5Vb;9mx98y z{0i?FOwn|#%(!1`ak+kw?FdKtR8TzJQ=Kl1#PP~mULw^pfPbtBd*?KMtv5|>wDZtm zF~vAdte0RiHUsG|r2E1&1aRkr)4W-WIUm07hA$fP!k~27i}KMMObg!87Q2((^n*%g z-V+TiSZ)gm zu-i{R9W#QkDX~^|?ib0}LT~?$1Hmz;FIV9e(da*Qw8|Ulu`kHOiYv-rTN`4XjALYtC9~m|A%5tU zEOxrw{3F(umEkX;mX+ATk4iQx_0YeB2NH)k-Dh7MBUR`|!~Rc%pic7s+54gf;bDM% zoxp~NdMCSiCv#Anca|90hiZ*}F^w{?L>jzAQ8 z--18`LF$36_Kd?OYVy^zV>vjDKn_Ko1*vY~;QN6EDs$!3Ec(fA*+bvwAsVUL@&BT| z!BjK)2SI&FZ+3D&DH!M~tHVijgvEPmE_=byMcgX?tUWbJePLBDHuBmJc7$ zGDkBOy5HT1TYqR!R5$lA>g0bh0-+8qNDLAQu-V=xUl|Nt+_q}A+iTOFZaLYGzji3M z?#JFHF`sAF=-T`rXjT=4R-zF={Dl#F)6-v2i#ayXA#Z6u0IWk;-k*y568YYNa1dnb zA=X6_@blr8h$ukw1k@VB)3e0;eLy0(f$pAG>%aLwuvlIC#ShsS)P+j%3CN_4!nbA; zS<1ub&1>Q9It&1up31$X|Lf;Jtj|B>eH&%GkA_4X+gIbZg!k%k5+0T2OEd#b`pod9 zTde-Wk03VXajbhp&>0dD`iqCuQh%|fB8}sn7o0;*nvF>F(be4p$pS9#V=xfU-&ZqP zteQ5?Ysx(3d@CVb7KW>V%LaXIZCqH!m&=2G`6Qmy<`>G}Ti<}iG7LSR&oY;5zoYqe z`S|0udb=w5$Y*ON(bU8oFKi;r6kxYMmOLl<#mR%G{0#I%4gSbTyt)LxYs+K-{;gwq zcfmP*z2LCJfj^Y452Pe={ZnMv^zoY2t5#AB1??VS6ZPMXd9-03b2c(!t0bTe#|(B3FZwGbH5I zV@O#gI@ZWv>b{82ExSqQ5EP43W6RpBmHm^8NjgIr{$Cx911Ep?uReFqjMEteKh!T= zhk=eBOqh9FZp|ulnPoC$aCO4mt5x_);L%5BC4MMZb#0*}C8g<8r6$hvp*2{Grg+9@ zW7%)Z=So7o&TADRh0iP}9Fj-L1ploX<@d89kR+rl4(iHFPP=swuhOsk5Tg)nS=xIP z!3JbEb`vz--%-8$qU;C*^gJQjooOS3eY`-D2jlNXSYN)>>xb7D4N08 z-;!>&ZXG`Osa)%E_yWv#bF?d!%!L1j=t+n;`#vYSMl^YLwD;Tw^Hjwn79$_aUX^%} zXK5%lum^|#B(NoY7|sRW+vNk2jtJ%xM0J8dhEHM_Hb;~{iiY0^ow*O_Bh6i^SNDZ` zkS~?$kb5BTYbhB&Iu_u`W-PvUpQT9uM#M@VwdRXFEDB`x;HzE+J^djdz#LAk=O2{%{HnemxIx04Vgv74hmp+A9bn-$J#B~?& zr&0!1nO(8Rm;a|`OwG&KCN!R)>&vSw^$Gu_vq_@TVSeK6+!pWR_jXu*7Ln;m1cFIf2Hno7>R(E0_+mQ_-h_ z`L4D9I5)XTy!=l&);$we)YUE+)a^+0$;F4DQ(5R5Q(5H+$Pp7A9N_N?25EWO{@J1T zVIy?(89=MVvo8Z3!!f(>vF zh_o)gCeHkoqhhF?HTqH8&lAjFG{vY~S4`u7N_%(3?ayzZspo=~GQrQ(Rm%QzQX7NG z)7f5)31mis=7D<#k&FpN0{+_OCGHm&pHI7{dgPwYoHkU$dzyJ$pE+ zn}GpwBnagmyS95lnP@$uKnvVY9Fp~d@nqRPlb}mb{Q*hzVBmO1j6466dFknyg&F_U zdx}dhmWS$30glP|RQ&jB(~qcw%IIZ1C@?3)KMSmOWv4Fib)$}}Ro2({Gj<45^=3kI z8ybazb2VuUNJvb%0gGQ{*+U}R=a)a+tBZ=634u^IKCly+{tY$>mTt*~LiMa2-DMUy z7D$+&)h7^lk!IhJy`ApZ#)S-L1@P2PI+rGT*r3l+s}jTJj3O8gke++h2u9D|0(*~I zG)iXSH#Zb>^|m+Xr58`x+N?xHU3Nvz2;ca!VKqN5y{v`|~H! z?!RI+t{QroJ-;1o;`$@lKhUhsJ%BR;Q46xsYpx8{Zz%!L=O6mRe@>(!T;+m1d2YMD zkvrz!clfLF_y7GQ5j0k9^Y%!^uysT}i14+sRp%)=LJ{HwZDL|#zz_J`Y&WgD>hb^< zR6*ADRxf>dB=;wbs(h9X@3(Cp{S}ctn_&OJeSZ0S zZRYr1>IbWgd_A&iF{cjmb_Y0}BEpfP|8HZahK!{$@o|fdwNpXsl+alg=Du52(eOn( zbt0;)4kiF4h@^t@%t~EBG-M1FSdC2&Lq*ya<`E=uHEQhB=sP+Y?&r_AQ56L<`S}g> zGb1e4wt05{o3ocD_kAbB13$g4+UHw6_8O89Bj?Ft&OyaHl}Y{t4Svu>WvWx0oC^4u zd%3eryJ(QN-{h$urVx5Zh^%*i00gV3(3J?CNFiZN9FmA%CSqG+6WD|-9Ap$Tz&7A9 z9@1V?y%8RpF&JO`8K?RzEo|5b#A|cfXjYro2yt!?d-~=Vh^b2Hjh!@Qx`PlLfA!Xk zq)lY8=PR-(w;w@e=NnNQD@Ox2we(vAAW6G4;%?@6pVx+@RmrC>a(EL1(gYhqthUT( z!>22o6z?&$?@beY9!$Kods&atdi=|8<=gak@0HD9>!!Npkh%S+r4*F6mZXx?$xM2c=?A;tV zn)(sX(}x|Je`OA8o?6Oc#_eG1h-Z88qwKsI$qGF_XYqxDv2TFO<`6(Wv?q;_UvT+; zZ_g59C&oeKhlqZ{;(Ouo`IF}x^bW+iJv)#mO3rGlA@9-{X-Ay3RCv2-IsZuGIKpIc zxsp_j0mb2ze)yA65wI->H|@l7e7|#?o4mcas2(7Bw9^p_iO&pS1j}@gxapE4FxMDs zrvQNp`X>q1QwtXCPY0g0dzifoxZNo5R0ns*_1}wJ4@ZcLW+CKH-K`sizbbt~-8#{h zYbC90EDEGRMVutXnVKJBG_m-mf&00%PZQT{nF>_?lbSKc zh1k;Pv(joOzx%Ai3Jm&rKIGqY@iFvEUPT-3ID`@3XF^TTVgP6tZ8FJ1yKwMz0-l72 z@9pz!f!jZw3DFTe@^EXS$*iunY_zX?2Gy^xAq%l+6ML8ySq-&NTv+}l-oW4|kQ<5? zLEvKFJ%9`)h1I+PT9c1@Jh(OAUgIP~0 zLC7*(5HwT;3KVv~t9OAMFQ+eqy9CmTOQRj3@b1`q{8GDre`Vi-j4? zr)aiOoX?ZZC3@iH0`>>Rw4}A^p*SOm9p8R`$u0EcfH&H&5;#t05@3-DWPote+01z2fm{5JdrmX?W zfn2{-sH54GA?zG^v4I+-5ZGtvya_cIr3d`zWcw!CTZ(_O#Lpir<=Sg-%QP9K3-8{Z zw^j#ob$-J%y|?JrTHv&Y{=~_<>v@ClUx`v<5-n37i|zpRk( zRArfY3j{6a*=n0Uw=O|>xl&zpwGiibz>;Rc4G{10OswMf;29w`$YY`Eyf`;u-|NcF z<5}(Oy~f{=m+G)x5-NN{+)t*&*+)K?(e7B|7&MG}GyXKGyVzS3K1q7OS%G_c zhZ4|?Q2^B^w2qQ1+uT%+nId#iq8M;p(TWA;-2NWU;LNQ|mFfS?>&pVHymgoa4_PgG zO%u6%B94?H4-DJM9omGag)eX!`Qh0}!tzHKC9ZHJM1(_4k_xOZ)W(;1d+%(^dorqiZXs3D4O&DVy)n$H7sOVg8brP7 z*~_*VF3kCL6I-Z*fI4BgTsMv1CX;ED?w;4@*+;1QNf%<-k6d~BB>!`<@<^|D{TO&^%nF5G+o#T)X2#SV88$p6x3|NIIAFHkw1HqiS6WJqPkMXmmty3W!yQ? zcRmpw5nm*3v#EYG)%oSqH(>2=eoWU2CO!=xSwtQ9$GHry87q`wA9sHMVVZYqy>MAC z{X$iBN%Yx(?|xQD7ZgFIG0`>BKF#rtX%aX-mXFghmE_>Kmh;Q2n%n%~guT6g&lmxKn6Jkybpe0M%_->a&DGC}*;3M;Q&SIJGvWzB@mq-nYm0k2fDg%Fk;F7C+<*a+i@ zpqsjD_fs(G5D~`3H!53gsMfb$FzI+I0XhU>*rZq1Ju<%-cI*yh)l!DCb+PM6E$VHW z+*2095r=2An8E$W^I%bIV_$h%XNdRHm+9jNmro6f4xPsx5Fl3Pwb1!yDg6zD#b~Vg zGw}SarikQ_)JFKAb9E-+lages5&h8kLviE*-))-5-DL*h1Z+gv-bv1>Xg{zCL}12L z#)h0lUBAah((~CnrjYF(%y%?iZa<)YU)5jG+V0SA_hvY*$nihDB#nynUp&H6X<6su z<(*q89#50wjj^x$kGC=BfZiD$Jn@5U3B|ggKL+wIaTzsTib_9PXMgfhGor}Ip=dg) zsb+_ZPmipzm@WGYx;u@^i%r+Z&p*T7_4%RS=mRy4yEKkF?wfQ~1GI=-YA5>Qm1gHOvN-zBUr4*>*61b~Fu;$W zzATA%?mNpC{sb;!F4FCV{_VT8Y=!UYH!Ew&>ETxoL(F`#WP3EMg?+SEj)~|*J~i}_ z87$F5(2iqF{mUC)K&J+y=c@N$3enL!h;jVq_=~)e3w%<#YHl?@oxc$aufl7@tZ&yj z!nIOf8hcxl{hObeO~FnxC|g%LxOXIx=Q&nqnp4Cr_C^xJ_|Cw~qBJ=7GK7QeLN{}w zeQkACVv4*j&`@<9Rx6!yEUJs)ZfT&MlFP5c#KA27Rre&k2{Hcg9D(^k5R2;-dzgB6 z>zP6Q2&i&ig9G}?bfx_P<91`1?kmqwxLM8ppp#$4KZ}{x7>b-;HMu5wfp29PkY+#& zoJK}@+zq7S#kRh%TDeOa52g~PqTf`O>DARN6<2V!83!6Ko9#6UAnGau%L4Zpt_cDa?j?cDJUtx@gfaQ#A+Zl7?{dl^^wZIJJtcjdNi&Qe(8{1WwfhvS#sje#=4FNMSvm7nVjG+wdG>wFJ{(%T3 z07eyf!Oz7gAyIK@V5s=Vz*eqcG(X>FqBeR*>Rm3^cFFVO4-up^Dc^_7d;gyr)JaLF zehGZB>0;HEZVoEY+`4jFE3kB`X?Tyv8VZ7}ML`Fw%vOUi8)-m`eIW>nMG*fnTm9Y3 zb@z+e^>SS0@B41{hb-Tq0at}rl>D;5^d7o8Tr7Q`3ha5AlVSB#X_(!I=dullZWhWI zld$ZfMxMTSbG^f0k5WT_lUGf9inom%pq~ulBcEf`3i?IPP4tB`{iV@;y>Oz_yKFGr zgZSw_tB8*qrcgDA|C!c6A|~54Lx8)4EzxTDsg-?RxLMrw*gTlcy$1FI0N|nVpA#{} z(u9f<3w!3|BI}$~Y`w2B&Xa;Mu0zX3S8|K8mwUQxJ{vc@lEG2^mwL+YClMS$M5MLoKy*IlcFo#&?8 zG6fFKyn+ZXQ$hMvRvcQg&@q`5K!ai;s&2+(qH~C^Y`i;HK=h}lEna19wY0+>>UNB+ zmEfeOoKG>5p^!7T&NHXwy53KIbpfDRwKF;5;sZsOb(zpXgkCI&LZS?YaBq2k?B!9? z9IT&uRnrHQ@&eD`lMi5By!0RHM4IqFni?SM93e&z>S(7Yh@slJ4TjhXStoarC=q_0xE#Z#kX8F9zHr#u?zOCMMf2ce z(tDd9J&YObhYEfrS}yTT@?Vm^A*)$M-=s>xc^(0OtJSvjKcqu2pJ3eA9PG;vxtH^KSu*XR z-|4RGvOAt-(hYDjb>RlEj(1!-?ERCbGB+8~^qX*{ksy?~$82-8Ye{n`_h7ZKQfF9@ zg3h8Vm~CMuvncv@#fF|!e1~%7I4-e=NuUPGUVcIB;p%7@24wt$oZ}Ww@BW9H7Vzw< zRak;wM#0AX2(ojP0neiFwscr*#0d^tIR<^(rBB&O=n0Tl(}W-p1-9<{f^xR=htaPX zB`^YDQGHzFnCMrbNmpt8XtVild?ftThcOoCRAK+!q9vf+VJz31K1HX-#Q-Q!Ugwz$ z6lxM_L_lmA%S3haWV812=}7YxS2~p@XenZ+RAc$G z*IA_Eq1l7dZA1+m16=JgJN!>9F00ElNBC+_N*?Po9vV}1aweEOncR-KY%UcQLM4~W z{DFm9ua;^)2&!gL^bt=g^K{&BEol~nzTjB_e*;TriZ4_6W^dGfumI&v`VP!@Z**(O zyQ@x!$L%_~S0>He?^Iq(c_1@)zVO_SXI*koGvE|g$Z3Lmnx$EgPL@dF_aKo{({wd7 zz)LfAc#B=u{cyx6sD3nly^gghX&ygcZD5CUo-AIl6=Q_UyN83{yLVtz*1h*CQ~{{J0}rj%yoJVh30Kqq@S|DTu}ON`5YL9Ep7z>B zI7y>(z?(|UH&U!JFaFIFEfPl5#mz)y>=&)0u7L8{jD33s4vNi=4mOTPX>!+1K#G+HRDhVSPjSAaa0)35y3u)q%NQ9EWFJ?L3fX__U; z43}gT3&19{m7K~;8`YC!XA6$NQ$0e%NF$(U{pQQU)`9EO;s+Go<%@gel3$+8=T8(< zQbl!%meOa+L5T4od1-HlZ689Mu!$Mgu&%hf!*#^LC)X23Rt3_S6r)wxezO;i7fx9o zAW^MU=i;H8F0CMQd$HJK?Av~a-)_n>PJ53vQc(grVx8#ypWyV9r29k&5LmdW2YFMX~KTM ze{o0w-O@9%@IX2CI(rAa;!e_>p=h7QoOMR{8FVi=pwJsBGou+-rw%j5pd+-~b@A#!_qQwV^-YUrx0W_Y#7y+R9;v#4Bm!aM5JWG} zLXjg@$NdAyE7*&4Qt#X$0=){cS;7;r6T^va&3QrBI#RIvWL5cdd*7z4Q@ zjb3I3yeTm+wfKFY^=x0wJqsqfZH=!PEh$DZ&b~M=t}#g|4A^*9FU(v#y8=c(x{e0( zC{ACa9x#J%s9;UN7UDVS?TYd@gzn+OySe!}IHHMNNuwzR;(nC$HTwLlV~VlM51EyY zR>F0kDIfL0f8j)B*~LsJ;V4!rJD;F#P;z6JZRf!Z?DMee3@E@UV*f3vrSLra`V=*+ zISP7cWYsQjj}V}o!|LK2<|ODKZ+=)sgXdVF;y zn`T~aE!4i72g+9TMhSw+@U*+875;d!;{-% zF;EG_dDBjRG-#xtdR-|MQ8&XO5vHlKAF_QZ+%!hLr){Y*p}nJL{QVM3>Q+;MAI>IK zJPmKDK&7I0CqM0FCww>OZl`602)z)Jck6&U$xs?16##!aU~%rsF>;gwjs;6nOBeAu zDm6HArvZY=Kar$KFFXH?Bg$X^-!*qSpQK+gr*bUUY0B|~(t=XWR`%JYF1Gs>KnD?FVqND0gV&`qrmVtI~P}V%7Vg=crvVT@508AqL7l}MqE;}U{ z!W3L@5U8b?oP5Wvm#ECUDZQ~8E1s?vx5=()Hen26lSky&&Dkanr9U0RHlClBSR>Mi zWFP{bQ_-z@j8WPmiO??^LC~t(vc@&;D?=PPDq?ENw`1sMWH#{Pc2(tvk7k!UPJqj=yHk#lAb-zYY0y5LljxEwg4o(3JHxzjh=ajWZl*8ty^>00 zw@vqba#c!}dsI*~eBIRqSW`FS2h(ZT(wfXZ(YBo>Q=_&VbCSB>m4ZFNMFB$|;RDW& zdOPYD?%hrqp$-(=P7qLabE-|DT*~X|!N$o>o}#Ah<1AdmE>R$4>!lb20u3fpgz_*$ zY5Pcnv{$fP4=!oYS1s{^`Cx1amy=}v1g{U8SLaA*>ga+DAmG9PL?igjuS!-be$ zl70bA@j##jGwy8WB9LNsRz7A~=joxUJij{fgfhCjAE;-=8Wp`&im}^m38_jf1i8!V zM=0r7b)Zi>{YuMb^#GI9t=L)6>FN;=E-BEeD^gSL@|Q8{cSjbRzd(HcP{m!j^{oS3 zbx(U3g1kKJ zI_)z-YWuUpHl|1VN-&|NjyeggH}DyE(fnQ0jtCNG8S%5A*|oNP!=EzaZM6sMA7MiB z*6lw{Y;PFXXN0eyLGrH>_?0or9M>xmlQOyI`EZlQFr_lIoi9X6L`u3%>eO|9L$iP! zY91&wNXZ+0;%I!@_=Lxdwbm#ctYak+NcReCv^5p-Un`?dGG(c(z#IACIJP_Ys=76C zUUgquR-lFz^BM_MLpBaKg$f6XVx#VdQP@B2tPm+bd}YC+w~|x~L<6JHo_Zkl8VM4U z&6E~mP`T=wp>^mNz7Euq-RfsIoOyD3xFosLu)R*A1N&=>kk3aIv@e*K#mPKq4Oqdg zD;&FJ^YKraMOsFw16Ke z?*qHq?tH^f;vp|8o1}6sw`DrL&lf`HKB9vO;=Y#zkaNdUcW<@{mZ;z2`{-_(Rq=+y z>qF%8FzvCpiQ#izpgey&tXPD?)`CzzbvaXw+~SH@tnL+7Z2R~=?;yn2x1j<@us^6( zohN29Q_pL%gPQ=MeaZ`SD{dr`l<*ELAhH8&R3E0yMsd8u_ROe2(zS%elr=cGmK+|MT z)oK>#7elZE`!OhwVy+yaSh>26@6LH%opZFGy5StaT8e`D$rJb|^Tu+c;$?-F$^X_t zo$nK^TRUcaQYScXjZO!uYe$8Y*A^GsZ|9GA%qB5zt02w~yYM2#6A1e`+ttOq!xPwB zC}1usd}u-rtjLi>m;&=A8gBkmDQy0P#x^kE$DZG1e?>2)9f*!wP3=}!q6|h2vv~S-W+s=v(FQrOeA;MpEk7-q{cNLxVEz;}HkELYthl z0l6KpsDWHA_tme2Xo>;!MZz5t1FN;t^=lazAPWOOS^(X6=t;6PL7H6KY*Q}F;kVw_ zcY{1Tkjsi`Q!8PhEK>vDZ)r*Mqxr$O9D-U1Y(bkp>=*m)Yx2V*f>I0j$$s%(!_R%1 zQv5<Y=Grp48?v1DuVil7pcANjuC{z;0f2YuwKeb)Pf2w5&EYpza zBXOQp2{Gdm^3trt&MlvtgG;>b2_P`Z_c zE!?&Fxn;vd>E=AMKY4<%idJGtw=acxM@pNU@ruV>@T)@FmuI;vjY($!DBk5}KUk0N zk-{ejYg_h(Zfs9HKkJ3YP#-%8jVZ1;l3@7le&4Do04hliUzx&5Bm6@; z^cR9r8}1|RUgWq34H(V+XNM9zsyaRg=~!QGyfIQ-tv}*Y`_OJAu^>N?%8%lX-+G82 zmohi()86K>jCdI;b=zF@`gdP$u@&ApQJ=MAV|wHM~-Z&uJK0l${)ncSY?b@`zT7-A}=KruF4CU3$7po&c(~YXeQN zN6<$?u)n|By{O8~(7L4WI85{5!)n(E=+ru()}y0sGDQ#0B_^+vy>fF#I}6m&6EhVB zj_q|mQ=quSN*p46bejC3BC#b$Yl#jdnw2h+1PMkfJqMiRTc+GvH`0p|W93f8dz7I3 zIruqKPk!KVr@MA=Nq_9TsnGwatdxxZO-T&aa{WZM)oD>(g2OEXC!U6z&fS#LC7ss7 z^b}X=_j1$8Q^+OIyZk-VbvGxb{4H&w>OZ3+k5B{rcTP?Z{dVSbhn#Qvq`$)lITB+=H{4zM4B+Z#ws3mw(@< zhv}xIJ$Y#Tj;{ibFy!buem7dgNPq%Jg5KBG6zqe#77vU-5JIW*l(=mwZ4u=$;|a4= zK@Z-|;8m63;7Dcm*TF`n$nIfyy&Y=pFXY#9wsL3Ec}fRII)ehqR&bmg8u*$nFn*jC z2UxFf-7o$D{(VqMZhzvrh0m>C!~7N|1KN8QQFIsP6+japt@Nf*J@jT_iJZeRa1OzA zeoYnyntQ;U|J69IxMwo05HD2r5WPVyd2Jl2LZZY7r5z7kpj$lZ#1{121HlvVMfQIE zrudW6sxl`qE|?dhVjOlCyy7qjt)4y(^P$S3M?EhfWr%M*cgHU_#}N5Ws_6f~zPx71SJ^puo^FZ=}i_^@BCs`3WU@a33{+&wJSri3jr zdsHT6ti*UW`MNKskPV%iise7iJM&FKOV9vn z%AMVvx))obiTHmJutQ56kXdcTK$!oap38D_MjGOe$#+{(}9`OO}B~a4~e7 z5uDya9%zD7Q>;x5jx(Xzp2#X^2CWV8 z!Kc5zJTv?Auk@fZgJkY?7f4S6LI=%(N-()#MzkG=puw}J9HzB*5dC>Y!bN;JqN->Ce4#lN5;s$k|7RIxuy(jxLakvItEN< zJxY^fR)~ZfXP6{nfRxEtvS66Yy+X4QA%l9I=lNOkEalRsFuhWCZ)TiCA%cIU>@l<8 zIdo$awhB9Imkh59)Mw?iM{;mdZdgwb{xWeI*=xd~gonSs>_W}o+}xol@rTeYThq|A zXZR4MoYbUg-6NewG^;nut~EJ*Sx9?Pv%}`*XznV8GcjU`+{N+rEU=`mlJ;)oCrew* zJJ(%vhAhTSa_5B({Xt&Nii(b~=omN(4>Gp4K$~?GK6e%FI;V>xwj0`>ehtVxSnleABeM+B61lg{H%Kz+cic=qw~DTYR8PQ$^rPZ}D5aP3yf z00FoXxQ|?{ivzT)k$Z7Ds-7jUielm6m+U=N`0Wb^xVc@Q)U;N25Q!rNQ#GD*+`OzP zHU;C_uRZT&J;?X3)SK@1+j52=B2guXmp(mKvsFWKsP$}JCbPK<8Zd?$k<)Uvz0 zRr-;pHr-P=G7AnS*Qy{s5xhRtVWMf%?WpnJsN6-Gu7M8)D+)Xav2s2j)j=j%aBX+R#lwiQ`^8#C3Q` zi0*G>qK;wLAkt1dgP6Z~C0IXo10U@w1gP92iju(SRnazKp@~rD93hmtOVyx=abH^K+Z~9`%;~J5^ zKtB(LXyN?j!jyFyo_}4xkq+Ss3RI84j4wAn_q7|#QE_ffRSv^aATWl$m79TUtbw7Y zZ+xUf1P1o9JDkKznX5Z|4&^I1%HIsz=LK5m$MTWS87ok7&hp2M~J(B6a8IR{#3a`p9Esdrdzg>)`Wh= zEYnFn`1mHM@1Rb~H&n02Rz|8#$uO6v^X)?nAKl+MFaqH6&G)F69xRz zpi^blUwxAF3zOq>rID*K0kz|E?=q&IHLy#MbAPZ^3#0cTqJl)cvhux&-zU^J4LA<2 zK_g~OyB<&Pg#+bHX>B>f!q55yGP}+q)2c!_QIUFHAnA~Mal{qkMV3w?QN`_KMCZvx zkMTu?kaPj7Pxfk8GZLV06TNwtPp9i}{f_u_(F=fr4d|1T-c*Y~kI8IGoZO8ML04rx zvuncNdt(`+$4ZSb8uvJ;9P+ppSDI7-ur>VrFc`HI+aIG%YWgjr0xHFf*bG%@| z$N3=u=R>dqdZ;weey~b{=dROg4)6IU{OPOrs)E_G?Tff$tJwhU!+(M}F~O#NC8}xi zPfSYz=@3)SR^^tly`l-MR;`Wqd#kG~G*wpPuwcb5e+rF-wHE%M&H z(+v^Yi*i(Tr}48%<=`OYD&w%3Zs4Adn7!)sz(Yu@aMb?_5@hX~#}e1&1M;Iz7L=Am zgOFK>>%{kZULn>RFoHsJd6OHa8rk-~1xJ4RiC(DTd&qp|@tP{vLGRXvHm8{q`Vb%v zW=~v!);{G$Qu`xvZBp18rwStko6odaa? z_S@s53DM8rPanqkwp21O5~>E4GktwEH};o*`=vH6S9rvudmqdr=kn~p-IX+mz7lHpvMQfth}+^LP+a|58fc^VM6@|)6mXIVOCS-TiUfUiSuVYDk5dpg3mTz#MSizG(>s@!n*m_c?u z10r>$fIidi2cenmGoiS?@uTBmjz>Vql4L5mnTq98zBn}{8!ZwJXV%M<>zoF4iCp{s zeB*sQib`B&^CZvv@Y8r&jK~=*FlwU#+^+YJxoIAoM=5-?5gL8-daX&!eKIv268oVO zYl@v(UTedH!n_LlF)-eGd#d3n0gy+$kRBx>;w@t#qQ=& zy}<_{{2BkyE|rQCYBADmqZWnp0-8|n5ENGH#VJ2?ki*#PL>O1^kr{ z{g~i>No?VKUh9Y5pn}9GqpH`%>E69<(k@2G?1KdP6$L~%H}gB0>o*$>@J0gKX5}|O z;DYE-UlF1v!c-wr(tB*lQ(iE(=(5SPH6e1{tBFpR4}^NyA(-7F2-wWhnzwep1oIGY zE(hn_NaqXxqbzhJaY$z*Dyg(dRVRDgA>pF6cO?i-!%GUdxT@XWSmaFB4y_#<>M^e= z*4IMV>2;n3D%(R^v&`DJ1ZFxc7PG1fG(2D;L0E%+x>y2YhUjl;t`41AJ+R+<0vLA9uc0ES5H~~^DUIdZ9CL4@dba_Gu_E!c= z438S#QLCqw8?Mpz8!EF$-{Bzo4 ztvNw)!^xMsj$3il_^}=Rn7p46*p8)oc!`BZA8*nRr})Nlrkb+CHm~ziy_58Qe+6k& z9kOFqkV1PVt3??F>I;B1W!cSaBA%Rz9lKxDVUv~tPurTQ07`RtqJ2(=?4YR6nP}F@I4`I!9V_VSIuA}TD%7oaTE~oR89-=@(|Ut; zZMQ=!06=-OC3>q{frB2C@pIQ*7i9Cae#lNF;KD);ITiSIg=PU#k$o5+Z1=m=2WPt< zOmliTW=aY%P&$1jc_>mT-JE_}oW0N?8CBJaHM?xoo^ro)I&EOd3SH)x&VyFQEjZeY ziqw|m1eqh@H%A%3lW$`2SAsb!drYXXEr~vB8>Xu-3zw6x$aPUGve>?uuT+==g+BSj zQ4@Q5*B!8SSL%7ut?-5@xv;LkjBhpoV?2VCEgU`Rm&npZ$0!PGa$}uvUwL&x_keqL zW_wJ{+9MeL+`7($<-3 zsC47mTENd#3fk_I^{e6X2w!s`B8G*?P4L`oD#~mHKExCZ+yteW{;~_JH|9J_N7q7f zn?p+)RfRbircEl@DbXEhhoZ@IXJ}ppMp3%VXZAdGm&ZqnScYxHc2~V42v?{NsgS;U zkq@fFDa6*X)%CJ~WqW8El{YV?$E^`A%Lbulx18xMV0C1umP;Iu9wtd8rRM6LIc6c$INS$zZ=~zS;hJl;`jwmWpH7o*D|3>OD1EAmdDNq)E7VB#s#W#R z341t9+*}l54))5i?Fk!^BJOLq8e8Y_&kSCty&M-q*i9%{Xe7O-%$g9Snt0vEy_7bt z(I6J2Za)4MKXQ+nfL8FmV}?qj^tLh?NJ?WSPyxgA7Q2u%u&uc@!IwR$lTMNynP>b} zI5VBH$JyPy1;+)L#cIG?@JVS#m2?Llq?&x+0X)L+ zBb?FXWq;s2IvbCeHjMI&V0kQ&Qm>(*!MPzN9Dsgo-aAsJ>=(Y`uB|on^07vIrI@+| z4a~}VU%~$k3r>cu8XFtI2w%+IdaMZ0aT$TvrN9w>y;KVDNt&}gVtt*ZHL!I{%6xT| zaWwX1k$^QuiH+iS#xgBvQCHO;ZP(fS3+1In5E6~N?Vv}^^aI8~r7u;Qva#*`db7N; z(}o`G#MkqrL2XQ3iRR=D7ID0uXTTF8{pZ5!fz@$aULNd5#Ok>I_OqgP2`RV&-&1g5 zhx=OujwC==25UQqUZfA&XFLlHnXYB+`Kk5ag{W`que$@OcY244{rEK>71hyP8j86g z6)jf?5O%@pr!x|IEosbAF4QaqH1|FsU))ddFkk;2zA{_+aF%+F!*}5rV8r!_`#e~EuprJBWlm>%lAYu-j{KF zP_;$c2!gS0R3azD@~t1go7s%}QkX8GzPb(De{CYIJ;=myNS{_^2LfG*7p8#+?sw!k zC7@-dvIZwt!X&LK@zYPsYvGNCzacuJNon`1{miEsBuqf&9og!k*yXb)TT(m)7VZ|o z50XdaA^S?$wm#_vHeBoRnzvn&9GV{-^@$&3MnYVONSdcC1?==?BG%XS__zIA;cl6t zQOv||WiX<;5i_IlpXxf;s=ZsuN^CElK7Z~N7SHv&S&>PRS5Cc^=djWMF+3Ub_zoqfJNOf zFTY3YJp@N>TLQ-{1j7;?%(i2LCy5H$156uD2=9z=mXH&Vwrag7tuf8;-Tvuf7K55z zV2X5m#gvNOuoaY+CFSe;ECRP9or*b|S>*k0dR_9ft1lAyO|0WR8Y zK{8i{5A`1qTy2wg1BlAF0aK&Zm-p4LqGsn>>H%#6>Hxx;ADVd{ z;@K)zB`bYfOQ39O748z|qa~WNiW$Jqa9!hZkwp~4sIEdxQyS*fok{z1+fdKz5^)t8 zgZi}2Jx5ShDANttA=ukYtnZ|UA7@hoYaS^+IBS6Bs=KOvmK?fRJpf^^=M`g2hzwJf zPU42tmYCMj9eF-3@eLBMSnz*A;f=ZSlhP(=qxTZun?Ytc)exq*`0KN?URfRd9FG6I z5nsKy4`*ylHD7qUhxuc=t-6DCsrNYIh7|Txx5RU5&_LLe9iS&h!cXMs=%LnpK280J zLV2tiSgSO&4)LDM|F$zG_@N`8IXGx(w-%t_>A02Ob3yFwoJU+yT zoO6pI)^Xm2yHW6MPbp>gVhcAKhCl17l!~HWr~ZN~Am3ym2~I*IEUqNa-^4=62I(}_NOvG4*1h8)jT?R z^*x5iS38@;GtkcJSlc;L#3z_1rZ?QJJv957R}kt08@u=|ljZ_;m-4l0G$&gwxqN@< zg3LH&mRFZ5a1vbQoY~+vpHF@PqK3uxMcB8tDUOkU!PK@2MPNNE~drPdvVXcQ)#8+@HChjhv&mwm{kU5SIJw(ekank5m#JrYLt z0yI*30T@=V@32KNPP#;~aW&u2yCgS{9d{`(Ma}mg$5#ncIWZQql^<5^%ii>i3cRN5RxS2DQT3xI*}9LZ@P-93fZ$c+*|?{bfDDb z=e~zUVwy9AUVSqKhKuYP>f&POMhA$q{r+{vAuWGwj(Nw6G=<+E?jD?x>#@oNK^ZQ# zI92kXo%$4yqs>6zO5en~IU;5nUBB{dhCJhHG_v|ed0nM4KbVf#^?`JsumH!ihr&W(pEEa44~UrQN<`VvhAPLa_~-Q!P-UtwCgY37;cN;<%>1g@f0yW0 z$R}#?{#AaI-U}a}t=AmPxD~sj(F{Kp&aQcSioxbc_BDLiWwWvR<4>ABLrg%Z7zHlY zA-5qyQge{4AJzkWk-`hoq{dvGSv0SdnsHQfHJn-hrE}_6-%gz&uNE4ckV}VN8gXD8 z!Pm$ag;to)lGJw1e5qSarg)2dtjk1J4^{0J>HNtxY*!cadyhDa9~9l)9K{YUlyd0A zY?`7_5OL5TBi_K$LfsV@vJ z+GKosW2(*3_0u^QMzE;!JSnpeI#fS#Ct##}#0&rkO?2}#oXouo7xM0P-JNX`jNwSc zcVA;a20!~20quH2f2kf<&N}e~onCQNa?7UHC<&pSZtj}ygv+UVd8vFV>@JiwGagSA zgC87(zqg&2AdnZ?tWE9sj=MBK_n5i$70d-GLh^R;nUivmq@q<((yod4LYhOVaPhNi zA*YUw{pr%5RjMREeFi84fy$I7Guk$U?=)Y_-26OghNV8wE+N3S=UG+ck#eLT&uS#- zJ3S;~r~ZOM)#$BL!FXza9ybzWFvTCEHsysgX_-mxGKEQ>w)syW*uD^)hRjOo#Bt_Nwf?!x+t%=~Mp89D}75HGUIhtz61U_2wbs9~&n zU3_msN1dTw;8>D|vJCUQf5o;Cz*}2wWr08M;jddLTp-&mDX{v6ar)NJM4c)V)rTKza2 zJe!f+p~kz6BnbHW}>ba}>M8qUfqTDwy??U>IR|XkX zahCdBNH%7f_Q3+GMGdo~Xj{W{)aZPPze-d1Db)M>w-uKViHhUhwOkwcZ;pvwRiZ)J zF#(CGIzQlvt$sQt%8D*d5Rpr>Vgbp?4ksVm6~^T)4zPtKdUa}ov*gfI&&A7DAfzoX z>E>ymFV@IEqeH(!FhzRf*0fs^Dio+fLM%J7-cBY%=AinoLwL(zzYiNnEypq?2!u*{gGapF%b)9UMXH8HLo0tdW|e{9O;gUt%7YvW4+}jS?Wnn!0wiYa9e)`wb^)hC zM36I)m&Rl#d`P+c)8xRF`G=&(p29t156w(YM~r&4O*OdhY>iLK@u{A^Sd+R)-4>0@ zOKSqKdn2YJlo5~Z)LNt5&)i;#+a}ctfYHQdaB`ksZHyTk)`% zZ=DqX`qp{Y^ATtfNwcy5a`ViNb%oJ76l5%c*i!9&J&lT;d)sC|)v%)TA zxv=Kf>~pTqiys|_`Fx+T{bHlu#CYnb>y}}kWM{Cnxl{4L=Z$fT+2F=$2gKz&Xyxhb zcAM3+hvufTX6GCMH023jGN+j|)`=XOKlJjAhmgqk9q;ZhU1~1*N*3+nPlXDeOezeM z!y<%-%}_IoCELiBN6(Dnvg%W$w8pUom~N#<#;FUjQUr0o5e-UxZy885xI095nq1Z< z7LqSqE^zW!aaBgTjGDgU7|hsHuXYQg!qeg+9&!6Q5LFQ9>y5C{!PzV}U_5+c+dE8n zZ2yYNgC^)I3ji1<9z`XG$i>hv+Q23|m5%i_Xr`rVQ^k9jypS1V-FWm1|F&+{&VcT*y6FD**85en7L(|Kr85&%*eRjyCWo zP+C(~LE&C%nmNPa2p1~{q>hRjUHg3|F%J0QVPRoTE*?%E9*+A64i`@Z(!_%U;ll8*B>%|+z2}3y=Nd&?J0R%(hU8uGF zeG~3$NbvCsiv1P;|2%(J{0CC!Z={gm|3d!5^M8@AT;R^K4)*sYkrIFR|KDZ*>HIfP cjPuWv|DzNCYV%*#`#wwHiE;k-ok`&R54@e;djJ3c literal 0 HcmV?d00001 diff --git a/website/blog/2024/07-05-launching-crawlee-python/img/crawlee-python.webp b/website/blog/2024/07-05-launching-crawlee-python/img/crawlee-python.webp new file mode 100644 index 0000000000000000000000000000000000000000..65ee012d8604951ef13c5794a2ca31b71e58e3b4 GIT binary patch literal 22040 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 KG>bw*5C8x_>}Ov9 literal 0 HcmV?d00001 diff --git a/website/blog/2024/07-05-launching-crawlee-python/index.md b/website/blog/2024/07-05-launching-crawlee-python/index.md new file mode 100644 index 000000000000..e82fda0cdcaa --- /dev/null +++ b/website/blog/2024/07-05-launching-crawlee-python/index.md @@ -0,0 +1,136 @@ +--- +slug: launching-crawlee-python +title: 'Announcing Crawlee for Python: Now you can use Python to build reliable web crawlers' +description: 'Launching Crawlee for Python, a web scraping and automation libray to build reliable scrapers in Python fastly.' +image: ./img/crawlee-python.webp +author: Saurav Jain +authorTitle: Developer Community Manager +authorURL: https://github.com/souravjain540 +authorImageURL: https://avatars.githubusercontent.com/u/53312820?v=4&s=48 +authorTwitter: sauain +draft: true +--- + +:::danger Testimonial from early adopters +Crawlee for Python development team did a great job in building the product, it makes things faster for a Python developer. - [Maksym Bohomolov](https://apify.com/mantisus) +::: + +We launched Crawlee in [August 2022](https://blog.apify.com/announcing-crawlee-the-web-scraping-and-browser-automation-library/) and got an amazing response from the JavaScript community. With many early adopters in its initial days, we got valuable feedback, which gave Crawlee a strong base for its success. + +Today, [Crawlee built-in TypeScript](https://github.com/apify/crawlee) has nearly **13,000 stars on GitHub**, with 90 open-source contributors worldwide building the best web scraping and automation library. + +Since the launch, the feedback we’ve received most often [[1]](https://discord.com/channels/801163717915574323/999250964554981446/1138826582581059585)[[2]](https://discord.com/channels/801163717915574323/801163719198638092/1137702376267059290)[[3]](https://discord.com/channels/801163717915574323/1090592836044476426/1103977818221719584) has been to build Crawlee in Python so that the Python community can use all the features the JavaScript community does. + +With all these requests in mind and to simplify the life of Python web scraping developers, **we’re launching [Crawlee for Python](https://github.com/apify/crawlee-python) today.** + +The new library is still in **beta**, and we are looking for **early adopters**. + +![Crawlee for Python is looking for early adopters](./img/early-adopters.webp) + +Crawlee for Python has some amazing initial features, such as a unified interface for HTTP and headless browser crawling, automatic retries, and much more. + + + +## Why use Crawlee instead of a random HTTP library with an HTML parser? + +- Unified interface for HTTP & headless browser crawling. + - HTTP - HTTPX with BeautifulSoup, + - Headless browser - Playwright. +- Automatic parallel crawling based on available system resources. +- Written in Python with type hints - enhances DX (IDE autocompletion) and reduces bugs (static type checking). +- Automatic retries on errors or when you’re getting blocked. +- Integrated proxy rotation and session management. +- Configurable request routing - direct URLs to the appropriate handlers. +- Persistent queue for URLs to crawl. +- Pluggable storage of both tabular data and files. + +## Understanding the why behind the features of Crawlee + +### Out-of-the-box support for headless browser crawling (Playwright). + +While libraries like Scrapy require additional installation of middleware, i.e, [`scrapy-playwright`](https://github.com/scrapy-plugins/scrapy-playwright) and still doesn’t work with Windows, Crawlee for Python supports a unified interface for HTTP & headless browsers. + +Using a headless browser to download web pages and extract data, `PlaywrightCrawler` is ideal for crawling websites that require JavaScript execution. + +For websites that don’t require JavaScript, consider using the `BeautifulSoupCrawler,` which utilizes raw HTTP requests and will be much faster. + +```python +import asyncio + +from crawlee.playwright_crawler import PlaywrightCrawler, PlaywrightCrawlingContext + + +async def main() -> None: + # Create a crawler instance + crawler = PlaywrightCrawler( + # headless=False, + # browser_type='firefox', + ) + + @crawler.router.default_handler + async def request_handler(context: PlaywrightCrawlingContext) -> None: + data = { + "request_url": context.request.url, + "page_url": context.page.url, + "page_title": await context.page.title(), + "page_content": (await context.page.content())[:10000], + } + await context.push_data(data) + + await crawler.run(["https://crawlee.dev"]) + + +if __name__ == "__main__": + asyncio.run(main()) +``` + +The above example uses Crawlee’s built-in `PlaywrightCrawler` to crawl the [https://crawlee.dev/](https://crawlee.dev/) website title and its content. + +### Small learning curve + +In other libraries like Scrapy, when you run a command to create a new project, you get many files. Then you need to learn about the architecture, including various components (spiders, middlewares, pipelines, etc.). [The learning curve is very steep](https://crawlee.dev/blog/scrapy-vs-crawlee#language-and-development-environments). + +While building Crawlee, we made sure that the learning curve and the setup would be as fast as possible. + +With [ready-made templates](https://github.com/apify/crawlee-python/tree/master/templates), and having only a single file to add the code, it's very easy to start building a scraper, you might need to learn a little about request handlers and storage, but that’s all. + +### Complete type hint coverage + +We know how much developers like their code to be high-quality, readable, and maintainable. + +That's why the whole code base of Crawlee is fully type-hinted. + +Thanks to that, you should have better autocompletion in your IDE, enhancing developer experience while developing your scrapers using Crawlee. + +Type hinting should also reduce the number of bugs thanks to static type checking. + +![Crawlee_Python_Type_Hint](./img/crawlee-python-type-hint.webp) + +### Based on Asyncio + +Crawlee is fully asynchronous and based on [Asyncio](https://docs.python.org/3/library/asyncio.html). For scraping frameworks, where many IO-bounds operations occur, this should be crucial to achieving high performance. + +Also, thanks to Asyncio, integration with other applications or the rest of your system should be easy. + +How is this different from the Scrapy framework, which is also asynchronous? + +Scrapy relies on the "legacy" Twisted framework. Integrating Scrapy with modern Asyncio-based applications can be challenging, often requiring more effort and debugging [[1]](https://stackoverflow.com/questions/49201915/debugging-scrapy-project-in-visual-studio-code). + +## Power of open source community and early adopters giveaway + +Crawlee for Python is fully open-sourced and the codebase is available on the [GitHub repository of Crawlee for Python](https://github.com/apify/crawlee-python). + +We have already started receiving initial and very [valuable contributions from the Python community](https://github.com/apify/crawlee-python/pull/226). + +:::danger Early adopters also said + +“Crawlee for Python development team did a great job in building the product, it makes things faster for a Python developer.” ~ [Maksym Bohomolov](https://apify.com/mantisus) +::: + +There’s still room for improvement. Feel free to open issues, make pull requests, and [star the repository](https://github.com/apify/crawlee-python/) to spread the work to other developers. + +**We will award the first 10 pieces of feedback** that add value and are accepted by our team with an exclusive Crawlee for Python swag (The first Crawlee for Python swag ever). Check out the [GitHub issue here](https://github.com/apify/crawlee-python/issues/269/). + +With such contributions, we’re excited and looking forward to building an amazing library for the Python community. + +[Join our Discord community](https://apify.com/discord) with nearly 8,000 web scraping developers, where our team would be happy to help you with any problems or discuss any use case for Crawlee for Python. \ No newline at end of file